Load /tmp/tmp.JUKpM13035/jabref-2.0.1+2.1b2 into upstream/2.0.1+2.1b2
authorgregor herrmann <gregoa@debian.org>
Tue, 4 Jul 2006 14:41:37 +0000 (14:41 -0000)
committergregor herrmann <gregoa@debian.org>
Tue, 4 Jul 2006 14:41:37 +0000 (14:41 -0000)
debian/jabref/branches/upstream/current.

103 files changed:
build.number
build.xml
src/help/About.html
src/help/BaseFrameHelp.html
src/help/BibtexHelp.html
src/help/CiteSeerHelp.html
src/help/ContentSelectorHelp.html
src/help/Contents.html
src/help/EntryEditorHelp.html
src/help/ExternalFiles.html
src/help/GroupsHelp.html
src/help/HelpHelp.html
src/help/IEEEXploreHelp.html [new file with mode: 0644]
src/help/IEEEXplorerHelp.html [deleted file]
src/help/JournalAbbreviations.html
src/help/MedlineHelp.html
src/help/OpenOfficeHelp.html
src/help/SearchHelp.html
src/help/TimeStampHelp.html
src/help/de/About.html
src/help/fr/About.html
src/help/fr/BaseFrameHelp.html
src/help/fr/BibtexHelp.html
src/help/fr/CiteSeerHelp.html
src/help/fr/CommandLine.html
src/help/fr/ContentSelectorHelp.html
src/help/fr/Contents.html
src/help/fr/CustomExports.html
src/help/fr/CustomImports.html
src/help/fr/EntryEditorHelp.html
src/help/fr/ExternalFiles.html
src/help/fr/GroupsHelp.html
src/help/fr/HelpHelp.html
src/help/fr/IEEEXploreHelp.html [new file with mode: 0644]
src/help/fr/ImportInspectionDialog.html
src/help/fr/JournalAbbreviations.html
src/help/fr/MarkingHelp.html
src/help/fr/MedlineHelp.html
src/help/fr/OpenOfficeHelp.html
src/help/fr/SearchHelp.html
src/help/fr/ShortAuxImport.html [new file with mode: 0644]
src/help/fr/StringEditorHelp.html
src/help/fr/TimeStampHelp.html
src/images/splash-2.1.svg [new file with mode: 0644]
src/java/net/sf/jabref/AppearancePrefsTab.java
src/java/net/sf/jabref/BasePanel.java
src/java/net/sf/jabref/BibtexEntryType.java
src/java/net/sf/jabref/BrowseAction.java
src/java/net/sf/jabref/EntryComparator.java
src/java/net/sf/jabref/EntryCustomizationDialog.java
src/java/net/sf/jabref/EntryEditor.java
src/java/net/sf/jabref/EntryTable.java [deleted file]
src/java/net/sf/jabref/EntryTableModel.java [deleted file]
src/java/net/sf/jabref/FieldComparator.java
src/java/net/sf/jabref/Globals.java
src/java/net/sf/jabref/JabRef.java
src/java/net/sf/jabref/JabRefFrame.java
src/java/net/sf/jabref/JabRefPreferences.java
src/java/net/sf/jabref/MergeDialog.java
src/java/net/sf/jabref/PrefsDialog3.java
src/java/net/sf/jabref/RightClickMenu.java
src/java/net/sf/jabref/SplashScreen.java~ [deleted file]
src/java/net/sf/jabref/TablePrefsTab.java
src/java/net/sf/jabref/export/CustomExportDialog.java
src/java/net/sf/jabref/export/ExpandEndnoteFilters.java
src/java/net/sf/jabref/export/FileActions.java
src/java/net/sf/jabref/export/layout/LayoutEntry.java
src/java/net/sf/jabref/export/layout/format/AuthorAndsCommaReplacer.java
src/java/net/sf/jabref/export/layout/format/AuthorLastFirstAbbreviator.java
src/java/net/sf/jabref/export/layout/format/RTFChars.java
src/java/net/sf/jabref/export/layout/format/ToLowerCase.java
src/java/net/sf/jabref/external/ExternalFilePanel.java
src/java/net/sf/jabref/groups/EntryTableTransferHandler.java
src/java/net/sf/jabref/gui/EntryCustomizationDialog2.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 [new file with mode: 0644]
src/java/net/sf/jabref/imports/BibtexParser.java
src/java/net/sf/jabref/imports/EndnoteImporter.java
src/java/net/sf/jabref/imports/HTMLConverter.java
src/java/net/sf/jabref/imports/IEEEXploreFetcher.java
src/java/net/sf/jabref/imports/ImportCustomizationDialog.java
src/java/net/sf/jabref/imports/ImportMenuItem.java
src/java/net/sf/jabref/imports/ImportUnknownMenuItem.java [deleted file]
src/java/net/sf/jabref/imports/MedlineFetcher.java
src/java/net/sf/jabref/imports/MedlineHandler.java
src/java/net/sf/jabref/imports/OpenDatabaseAction.java
src/java/net/sf/jabref/journals/ManageJournalsPanel.java
src/java/net/sf/jabref/wizard/auximport/gui/FromAuxDialog.java
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_de.properties
src/resource/Menu_en.properties
src/resource/Menu_fr.properties
src/resource/Menu_it.properties
src/resource/Menu_no.properties
src/resource/build.properties
src/resource/layout/harvard/harvard.begin.layout
src/txt/README
src/txt/README~ [new file with mode: 0644]

index 30ca81d..34ffcd8 100644 (file)
@@ -1,3 +1,3 @@
 #Build Number for ANT. Do not edit!
-#Tue May 09 22:53:43 CEST 2006
-build.number=108
+#Thu Jun 29 22:30:13 CEST 2006
+build.number=100
index a8ccea2..d7cc82a 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -22,9 +22,9 @@
    Compiler: Ant
    Authors:  Joerg K. Wegner, wegnerj@informatik.uni-tuebingen.de
              Morten O. Alver
-   Version:  $Revision: 1.59 $
-             $Date: 2006/04/26 08:38:44 $
-             $Author: kiar $
+   Version:  $Revision: 1.61 $
+             $Date: 2006/06/29 19:59:18 $
+             $Author: mortenalver $
 
    modified:
              28.07.2005 r.nagel
@@ -46,7 +46,7 @@
 
         <!-- some version information -->
         <property name="jabref.bin" value="jabref" />
-        <property name="jabref.version" value="2.1 beta" />
+        <property name="jabref.version" value="2.1 beta 2" />
         <property name="jabref.placeholder.version" value="@version@" /> <!-- used by replace task -->
 
 
             <pathelement location="${library.directory}/forms-1.0.4.jar" />
             <pathelement location="${library.directory}/spin-1.4.jar" />
             <pathelement location="${library.directory}/glazedlists-1.5.0_java14.jar" />
+            <pathelement location="${library.directory}/microba.jar" />
         </classpath>
          </java>
     </target>
index a99654b..59a599f 100755 (executable)
@@ -39,6 +39,7 @@ 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>
index c15ceb1..9bc79bb 100755 (executable)
@@ -18,11 +18,7 @@ as a configurable selection of their fields.
 <ul>
 <li>You decide which fields are shown in the table by checking the fields you want
 to see in the <strong>Preferences</strong> dialog.</li>
-<li>Fields can be edited directly in the table, by simply clicking on a cell and
-typing the contents
-(this edition mode is possible only if "Allow editing in table cells"
-is selected in <strong>Options --> Preferences --> General</strong>).
-Double-click a cell to enter a more powerful edit mode.
+<li>Double-click a line of the table to edit the entry content.
 You can navigate the table with the arrow keys.</li>
 <li>The table is sorted according to a set of fields of your choosing.
 The default sort order is set up in <strong>Preferences -> Entry table</strong>,
@@ -69,11 +65,9 @@ the entry types you use most often, e.g. CTRL-SHIFT-A for adding an
 
 <H2>Editing an entry</H2> To open an <a
 href="EntryEditorHelp.html">editor dialog</a> for an existing entry,
-simply double-click in the leftmost column of the appropriate line, or
-select the entry and press ENTER.
-If "Allow editing in table cells" is not selected in the dialog window
-<strong>Options --> Preferences --> General</strong>, a double-click anywhere
-on the appropriate line will open the <a href="EntryEditorHelp.html">editor dialog</a>.
+simply double-click anywhere
+on the appropriate line will open the <a href="EntryEditorHelp.html">editor dialog</a>
+(or select the entry and press ENTER).
 
 
 <H2>Referencing a <em>bibtex</em> string in a field</H2>
index 5aaf241..bbe448f 100755 (executable)
@@ -85,7 +85,6 @@ to differentiate between middle names and last names.<br>
     <span style="font-weight: bold;"></span></li>
   <li><span style="font-weight: bold;"></span><strong>booktitle<br>
     </strong>Title of a book, part of which is being cited.
-See the LaTeX book for how to type titles.
 For book entries, use the <tt>title</tt> field instead.
     <p>
     </p>
@@ -129,7 +128,8 @@ The first word should be capitalized.
   </li>
   <li><strong>journal<br>
     </strong>A journal name.
-Abbreviations are provided for many journals; see the <i>Local Guide</i>.
+The name of a journal can be abbreviated using a "string".
+To define such string, use the <a href="StringEditorHelp.html">string editor</a>.
     <p>
     </p>
   </li>
@@ -144,8 +144,7 @@ This field should not be confused with the key that appears in the
   <li><strong>month<br>
     </strong>The month in which the work was
 published or, for an unpublished work, in which it was written.
-You should use the standard three-letter abbreviation,
-as described in Appendix B.1.3 of the LaTeX book.
+You should use the standard three-letter abbreviation (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec).
     <p>
     </p>
   </li>
@@ -195,7 +194,7 @@ to the double dash used in TeX to denote number ranges
   </li>
   <li><strong>series<br>
     </strong>The name of a series or set of books.
-When citing an entire book, the the <tt>title</tt> field
+When citing an entire book, the <tt>title</tt> field
 gives its title and an optional <tt>series</tt> field gives the
 name of a series or multi-volume set
 in which the book is published.
@@ -203,7 +202,10 @@ in which the book is published.
     </p>
   </li>
   <li><strong>title<br>
-    </strong>The work's title, typed as explained in the LaTeX book.
+    </strong>The work's title. The capitalization may depend on
+the bibliography style and on the language used. For words that
+have to be capitalized (such as a proper noun), enclose the word
+(or its first letter) in braces.
     <p>
     </p>
   </li>
@@ -364,4 +366,4 @@ information.  Here is a list of some of the more common fields:
 
 
 
-</body></html>
\ No newline at end of file
+</body></html> 
\ No newline at end of file
index 6c56bd3..032c361 100644 (file)
@@ -21,14 +21,14 @@ and click on the (Update) link for this citation.  The URL for the Update link w
 ID for this citation.
 
 <p>Once you have populated the citeseerurl field, you may download the CiteSeer fields by selecting
- <b>BibTex -> Import Data from CiteSeer</b>.  Make sure you have selected the row(s) you wish to 
+ <b>BibTex -> Import Fields from CiteSeer</b>.  Make sure you have selected the row(s) you wish to
  update.
 
 <H2>Generating a Citation Database</H2>
 
 Given a set of references, you can generate a list of documents that cite the elements of this set.
 To facilitate this feature, each citation in a database must have a citeseerurl field with the format specified
-in <b>Importing An Entry From CiteSeer</b>.  To use this feature, select <b>Tools -> Fetch Citations
+in <b>Importing An Entry From CiteSeer</b>.  To use this feature, select <b>Web Search -> Fetch Citations
 from CiteSeer</b>.
 
 <H2>Using a Proxy Server</H2>
index 272939c..0a01f6b 100755 (executable)
   <body>
     <h1>Field content selector</h1>
 
-       This feature allows you to store a selection of often-used
-       words or phrases that you use often in your
-       database. By default it is enabled for the fields
-       <em>Journal</em>, <em>Keywords</em> and <em>Publisher</em>, but you
-       can also add selectors to other fields, in the upper part of the
-       <em>Manage</em> dialog (menu <strong> Tools --> Manage content selectors</strong>).
-
-       <P>
-       The word selection is database-specific, and is saved along
-       with your references in the .bib file.
-       <P>
-       To add a new word, you can simply write it into the selector
-       combo box and press Enter. Using the <em>Manage</em> dialog
-       you can also remove words that you have added.
+    This feature allows you to store a selection of often-used
+    words or phrases that you use often in your
+    database. By default it is enabled for the fields
+    <em>Journal</em>, <em>Author</em>, <em>Keywords</em> and <em>Publisher</em>, but you
+    can also add selectors to other fields, in the upper part of the
+    <em>Manage</em> dialog (menu <strong> Tools --> Manage content selectors</strong>).
+
+    <P>
+    The word selection is database-specific, and is saved along
+    with your references in the .bib file.
+    <P>
+    To add a new word, you can simply write it into the selector
+    combo box and press Enter. Using the <em>Manage</em> dialog
+    you can also remove words that you have added.
 
 
 
index aad3eae..b503538 100755 (executable)
@@ -20,6 +20,7 @@
     <a href="EntryEditorHelp.html">Entry editor</a><br>
     <a href="CiteSeerHelp.html">Fetching entries from <em>CiteSeer</em></a><br>
     <a href="MedlineHelp.html">Fetching entries from <em>Medline</em></a><br>
+    <a href="IEEEXploreHelp.html">Fetching entries from <em>IEEExplore</em></a><br>
     <a href="ContentSelectorHelp.html">Field content selector</a><br>
     <a href="JournalAbbreviations.html">Journal abbreviations</a><br>
     <a href="GroupsHelp.html">Help on using <em>Groups</em></a><br>
index db3e093..457e8a2 100755 (executable)
@@ -5,10 +5,8 @@
 
 <H1>The entry editor</H1>
 
-<em>Opened from main window by double-clicking on the leftmost column of an entry
-(by double-clicking anywhere on the entry line if "Allow editing in table cells"
-is not selected in <strong>Options --> Preferences --> General</strong>)
-, or by pressing ENTER. The panel is closed by pressing ESC.</em>
+<em>Opened from main window by double-clicking anywhere on the line of the entry,
+or selecting the entry and pressing ENTER. The panel is closed by pressing ESC.</em>
 <P>
 In this panel you can specify all relevant information on a single entry.
 The entry editor checks the type of your entry, and lists all the fields that
@@ -24,9 +22,9 @@ type of entry, and which fields appear in the General fields tab. See
 
 <H2>The entry editor's panels</H2>
 
-The entry editor contains five panels, <em>required fields</em>,
-<em>optional fields</em>, <em>general fields</em>, <em>abstract</em> and <em>bibtex
-source</em>, where <em>general fields</em> and <em>abstract</em> can be customized
+The entry editor contains six panels: <em>Required fields</em>,
+<em>Optional fields</em>, <em>General</em>, <em>Abstract</em>, <em>Review</em> and <em>BibTeX
+source</em>, where <em>General</em>, <em>Abstract</em> and <em>Review</em> can be customized
 (see <a href="GeneralFields.html">Customizing general fields</a> for details).
 Inside the three first panels, TAB and SHIFT-TAB are used
 to switch focus between the text fields.
index ff746dd..91448bf 100644 (file)
@@ -13,7 +13,7 @@ links to the document on the web in the form of an URL or a DOI identifier.
 The program has to know which external viewers to use for PDF, PS and web pages. These are by default
 set to values that probably make sense for your operating system, so there's a fair chance you don't
 have to change these values.
-<p>To change the external viewer settings, go to <b>Preferences -> General</b>.
+<p>To change the external viewer settings, go to <b>Options -> Preferences -> External programs</b>.
 
 <H2>Opening external files or links</H2>
 
@@ -25,17 +25,29 @@ or the right-click menu to open the file or web page. Finally, you can click on
  are present), and the third column shows icons for URL or DOI (only URL if both are present). You open the file or web
  page by clicking on an icon.
 
-<H2>The main PDF directory</H2>
-
-PDF files get a special treatment to make it as easy as possible to link them to your entries. To take advantage of this
-you have to indicate a directory in <b>Options -> Preferences -> External programs</b> as your main PDF directory. All PDF files that are stored in
-or below this directory will be referred to with a relative path by JabRef, making it easy for you if you need to move the
-PDF directory or if several users use the same database from different network places.
-<P>Additionally, if you give your PDF files names that correspond to the relevant entry's bibtex key (plus '.pdf'),
-  JabRef will be able to search your main directory and its subfolders for the correct PDF. Once the correctly-named
-  PDF is in place you access this function by clicking the 'Auto' button next to the PDF field in the entry editor. If
-  the PDF is found, the field will immediately be set.
-<P>If you name a PDF file as mentioned, you can also open the PDF without setting the PDF field of the entry at all.
-  The downside is that the PDF icon will not appear in the table unless you do (manually or with the 'Auto' button).
+<P><b>Note:</b> If the PS field does not appear in the entry editor (in the 'General' panel),
+you may have to <a href="GeneralFields.html">customize the entry types of the general fields</a>.
+</P>
+
+<H2>The main PDF and PS directories</H2>
+
+JabRef makes it easy to link PDF and PS files to your entries. To take advantage of this,
+you have to indicate in <b>Options -> Preferences -> External programs</b> your main PDF and PS directories. All PDF and PS files that are stored in
+or below each of these directories will be referred to with a relative path by JabRef, making it easy for you if you need to move the
+PDF and PS directories, or if several users use the same database from different network places.
+
+<P>Additionally, if you give your PDF and PS files names that correspond to the relevant entry's bibtex key (plus '.pdf' or '.ps'),
+  JabRef will be able to search your main directories and its subfolders for the correct PDF and PS. Once the correctly-named
+  PDF or PS is in place you access this function by clicking the 'Auto' button next to the PDF and PS fields in the entry editor. If
+  the PDF or PS is found, the field will immediately be set.
+<P>If you name a PDF or PS file as mentioned, you can also open the file without setting the PDF or PS field of the entry at all.
+  The downside is that the PDF or PS icon will not appear in the table unless you do (manually or with the 'Auto' button).
+
+<H2>The database-specific PDF and PS directories</H2>
+<P>
+You can set PDF and PS directories specific to a database (<b>File -> Database properties</b>).
+These directories will supersede the main directories.
+</P>
+
 
 </HTML>
index 21aa6cb..9e3a980 100644 (file)
@@ -53,7 +53,7 @@ JabRef allows you to easily identify groups that overlap with the currently sele
 
 <H2>Types of groups</H2>
 
-In JabRef 1.8 there are four different types of groups:
+In JabRef there are four different types of groups:
 
 <ol>
 <li> The group <b>All Entries</b>, which -- as the name suggests -- contains all entries, is always present and cannot be edited or removed.
@@ -80,7 +80,7 @@ This method of grouping requires that all entries have a unique BibTeX key. In c
 
 The content of a dynamic group is defined by a logical condition. Only entries that meet this condition are contained in the group. This method uses the information stored in the database itself, and updates dynamically whenever the database changes.
 <p>
-Two types of conditions can be used: 
+Two types of conditions can be used:
 <dl>
 <dt><b>Searching a field for a keyword</b></dt>
 <dd>
@@ -92,7 +92,7 @@ This is similar to the above, but rather than search a single field for a single
 </dd>
 </dl>
 
-In the groups view, dynamic groups are shown in <i>italics</i> by default. This can be turned off in the preferences.
+In the groups view, dynamic groups are shown in <i>italics</i> by default. This can be turned off in the preferences (Options -> Preferences -> Groups, box "Show dynamic groups in italics").
 
 <h3>Hierarchical context</h3>
 
@@ -200,7 +200,7 @@ This method of grouping requires that all entries have a unique BibTeX key. In c
 
 The content of a dynamic group is defined by a logical condition. Only entries that meet this condition are contained in the group. This method uses the information stored in the database itself, and updates dynamically whenever the database changes.
 <p>
-Two types of conditions can be used: 
+Two types of conditions can be used:
 <dl>
 <dt><b>Searching a field for a keyword</b></dt>
 <dd>
index d318d85..b87c301 100755 (executable)
@@ -15,13 +15,13 @@ are standard HTML files.
 <P>
 When opened, the help window will default to different files depending on which
 program window it is called from. If this file doesn't explain the aspect you
-are interested in, the <em>Contents</em> button in the toolbar will take you 
+are interested in, the <em>Contents</em> button in the toolbar will take you
 to a list of the available help files.
 <P>
 In addition the toolbar contains navigation buttons for showing the next or
 previous file. These are similar to the <em>Back</em> and <em>Forward</em>
 buttons of a standard web browser. The keyboard shortcuts for navigation are
-CTRL-SHIFT and arrow key left for <em>Back</em> and right for <em>Forward</em>.
+the arrow key left for <em>Back</em> and the arrow key right for <em>Forward</em>.
 <P>
 The help window is closed by pressing ESCAPE.
 </HTML>
\ No newline at end of file
diff --git a/src/help/IEEEXploreHelp.html b/src/help/IEEEXploreHelp.html
new file mode 100644 (file)
index 0000000..43f2130
--- /dev/null
@@ -0,0 +1,26 @@
+<HTML>
+
+<BODY text="#275856">
+<basefont size="4" color="#2F4958" face="arial">
+
+<H1>Search IEEEXplore</H1>
+
+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.
+<P>
+To start a search, enter the words of your query, and press
+<b>Enter</b> or the <b>Fetch</b> button.
+
+<p>
+The search is done in guest mode, which means that a maximum of 100 results
+will be returned.
+
+<p>
+You may opt to download the abstracts along with the cite information for each
+entry, by checking the <b>Include abstracts</b> checkbox. This causes a
+significantly larger amount of network queries, so to avoid excessive pressure
+on the IEEEXplore web site, JabRef will refuse to download abstracts
+for searches returning more than a given number of hits.
+
+</HTML>
diff --git a/src/help/IEEEXplorerHelp.html b/src/help/IEEEXplorerHelp.html
deleted file mode 100644 (file)
index 5661a54..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Search IEEEXplore</H1>
-
-JabRef can download citations from the IEEEXplore database.
-To use this feature, choose <b>Tools -> Search IEEEXplore</b>,
-and the search interface will appear in the side pane.
-<P>
-To start a search, enter the words of your query, and press
-<b>Enter</b> or the <b>Fetch</b> button.
-
-<p>
-The search is done in guest mode, which means that a maximum of 100 results
-will be returned.
-
-<p>
-You may opt to download the abstracts along with the cite information for each
-entry, by checking the <b>Include abstracts</b> checkbox. This causes a
-significantly larger amount of network queries, so to avoid excessive pressure
-on the IEEEXplore web site, JabRef will refuse to download abstracts
-for searches returning more than a given number of hits.
-
-</HTML>
index bad1f06..23d0de7 100644 (file)
@@ -5,7 +5,7 @@
 
 <H1>Journal abbreviations</H1>
 
-This feature can be configured under <b>Tools -> Manage journal abbreviations</b>.
+This feature can be configured under <b>Options -> Manage journal abbreviations</b>.
 
 <p>JabRef can automatically toggle journal names between abbreviated and unabbreviated form, as long
 as the names are contained in one of your journal lists. You can use several lists, all realized as
@@ -26,7 +26,7 @@ If the current journal name is not found in your journal lists, the field will n
 <p>
 To convert the journal names of many entries in bulk, you can select any number of entries, and choose
 <b>Tools -> Abbreviate journal names (ISO)</b>, <b>Tools -> Abbreviate journal names (MEDLINE)</b> or
-    <b>Tools -> Unabbreviate journal names</b>. These two actions
+    <b>Tools -> Unabbreviate journal names</b>. These three actions
 will abbreviate and unabbreviate the journal names of all selected entries for which the journal name could
 be found in your journal lists.
 
index 7c5311e..55eaa5a 100644 (file)
@@ -6,7 +6,7 @@
 <H1>Fetching Medline entries</H1>
 
 JabRef can download citations from the Medline database.
-To use this feature, choose <b>Tools -> Fetch Medline</b>, 
+To use this feature, choose <b>Web search -> Fetch Medline</b>,
 and the Medline interface will appear in the side pane.
 <P>
 There are two ways of specifying which entries to download:
index 051e02b..5995e33 100644 (file)
@@ -23,7 +23,7 @@ database in OpenOffice.org:
     <li>Start OpenOffice.org</li>
     <li>Choose <b>Tools -> Options -> OpenOffice.org Base -> Databases</b></li>
     <li>Edit the <i>Bibliography</i> database, and change the name to something else,
-    e.g. <i>Bibliography-old</i></li>
+    e.g. <i>Bibliography-old</i> (indeed, OpenOffice.orgWriter does not allow for several bibliographies)</li>
     <li>Close the <b>Options</b> window, and choose <b>File -> New -> Database</b></li>
     <li>Choose <b>Connect to an existing database</b>, select <b>Spreadsheet</b> as
     the database type, and choose the <b>.ods</b> file you exported</li>
index 39ae96c..6503489 100644 (file)
@@ -24,8 +24,8 @@ string.
 When searching incrementally, the program searches immediately each
 time you press a letter. The status line informs you about the success
 of the search. Pressing the search shortcut keys causes the program to
-find the next occurence of the current search string. If no further
-occurences can be found, the status line will notify you about
+find the next occurrence of the current search string. If no further
+occurrences can be found, the status line will notify you about
 this. Repeating the search again causes the search to restart at the
 top. The search order always follows the current sorting of your
 database. To escape an incremental search, press ESC or click "Clear
@@ -34,7 +34,7 @@ search".
 <H2>Normal</H2>
 
 In a normal search, the program searches your database for all occurences of your
-search string, once you press ENTER. All entries that don't match are hidden, leaving for display the matching entries only.
+search string, once you press ENTER. All entries that don't match are hidden, leaving for display the matching entries only (filter mode), or are grayed-out (float mode).
 To stop displaying the search results, press ESC or click "Clear search".
 
 <a name="advanced"><H2>Field specification, logical operators</H2>
@@ -61,7 +61,7 @@ bibtexkey = miller2005
 
 <H2>Search settings</H2>
 
- The <em>Settings</em> button opens a menu that allows to toggle case sensitivity and use of regular expressions in the search, and whether search results should be selected in the table. 
+ The <em>Settings</em> button opens a menu that allows to toggle case sensitivity and use of regular expressions in the search, and whether search results should be selected in the table.
 
 </BODY>
 </HTML> 
\ No newline at end of file
index acf3f15..594a76d 100644 (file)
@@ -5,7 +5,7 @@
 
 <H1>Entry time stamps</H1>
 
-This feature can be toggled and configured under <b>Preferences -> General</b>.
+This feature can be toggled and configured under <b>Options -> Preferences -> General</b>.
 
 <p>JabRef can automatically set a field to contain the date an entry was added to the database.
 
index f12ff20..8bd20ff 100644 (file)
@@ -40,6 +40,7 @@ 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>
index 48ac59f..794c8b6 100644 (file)
@@ -39,6 +39,7 @@ 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>
@@ -77,7 +78,7 @@ JabRef utilise aussi la biblioth&egrave;que de threading Spin 1.3.1, qui est dis
 <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;s par The Jakarta Project
+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.
index 214064a..a3cf5ce 100644 (file)
@@ -21,19 +21,13 @@ donn&eacute;es, ainsi qu'une s&eacute;lection configurable de leurs champs.
 <ul>
 <li>Vous d&eacute;cidez des champs affich&eacute;s dans ce tableau en cochant les
 champs que vous voulez voir dans la fen&ecirc;tre de dialogue <strong>Pr&eacute;f&eacute;rences</strong>.</li>
-<li>Les champs peuvent &ecirc;tre &eacute;dit&eacute;s directement dans le tableau, en cliquant
-simplement dans la cellule et en tapant le contenu
-(ce mode d'&eacute;dition est possible uniquement si "Autoriser l'&eacute;dition dans les cellules
-du tableau" est coch&eacute;e dans <strong>Options -->
-Pr&eacute;f&eacute;rences --> G&eacute;n&eacute;ral</strong>).
-Double-cliquez dans la cellule pour utiliser un mode d'&eacute;dition plus puissant. Vous pouvez naviguer
-dans le tableau en utilisant les fl&egrave;ches du clavier.</li>
+<li>Pour &eacute;dit&eacute;r la valeur d'un champ, double-cliquez sur la ligne que vous voulez modifiez. Vous pouvez naviguer dans le tableau en utilisant les fl&egrave;ches du clavier.</li>
 <li>Le tableau est tri&eacute; selon une s&eacute;rie de champs de votre choix. L'ordre de tri par d&eacute;faut est configur&eacute; dans <strong>Options -> Pr&eacute;f&eacute;rences -> Table des entr&eacute;es</strong> mais vous pouvez changer rapidement et simplement cet ordre en double-cliquant sur le titre d'une colonne pour d&eacute;finir le crit&egrave;re de tri principal et en simple-cliquant sur le titre pour ajouter un nouveau sous-crit&egrave;re de tri. Si vous cliquez sur le titre d'une colonne qui est d&eacute;j&agrave; s&eacute;lectionn&eacute;e comme crit&egrave;re de tri, le sens de tri est invers&eacute;.
 <li>Vous pouvez ajuster la largeur des colonnes en faisant glisser les limites
 entre les ent&ecirc;tes.</li>
 <li>Dans la fen&ecirc;tre de dialogue <strong>Pr&eacute;f&eacute;rences</strong>, choisissez si le tableau
 doit &ecirc;tre redimensionn&eacute; pour s'ajuster &agrave; la fen&ecirc;tre. S&eacute;lectionnez cette option
-pour toujours voir l'ensemble du tableau, et d&eacute;s&eacute;lectionner l&agrave; pour permettre
+pour toujours voir l'ensemble du tableau, et d&eacute;s&eacute;lectionnez l&agrave; pour permettre
 l'affichage de plus d'informations.</li>
 <li>Les codes de couleurs vous aident &agrave; visualiser l'&eacute;tat
 de votre base de donn&eacute;es. Les cellules sont color&eacute;es de la
@@ -52,7 +46,7 @@ fa&ccedil;on suivante&nbsp;:
   </ul>
 </li>
 Les codes de couleurs peuvent &ecirc;tre modifi&eacute;s dans la fen&ecirc;tre de dialogue
-<strong>Pr&eacute;f&eacute;rences</strong>. 
+<strong>Pr&eacute;f&eacute;rences</strong>.
 
 </ul>
 
@@ -63,7 +57,7 @@ choisir le type d'entr&eacute;e &agrave; partir d'une liste. Pour &eacute;viter
 de dialogue, vous pouvez utilisez le menu <strong>BibTeX/ Nouvelle entr&eacute;e...</strong>
 ainsi que des raccourcis clavier pour les types les plus courants.
 
-<P>Lorsqu'une nouvelle entr&eacute;e est ajout&eacute;e, par d&eacute;faut, une 
+<P>Lorsqu'une nouvelle entr&eacute;e est ajout&eacute;e, par d&eacute;faut, une
 <a href="EntryEditorHelp.html">fen&ecirc;tre d'&eacute;dition</a> s'ouvre. Ce comportement
 peut &ecirc;tre modifi&eacute; dans la fen&ecirc;tre de dialogue <strong>Pr&eacute;f&eacute;rences</strong>.
 <P><em>Note&nbsp;:</em> Nous vous recommandons fortement d'apprendre les
@@ -71,16 +65,11 @@ raccourcis clavier des types d'entr&eacute;es que vous utilisez le plus souvent,
 tel que CTRL-SHIFT-A pour l'ajout d'une entr&eacute;e <em>article</em>.
 
 <H2>Editer une entr&eacute;e</H2> Pour ouvrir la <a
-href="EntryEditorHelp.html">fen&ecirc;tre d'&eacute;dition</a> sur une entr&eacute;e existante, 
-double-cliquez simplement dans la colonne la plus &agrave; gauche sur la ligne
-correspondante &agrave; l'entr&eacute;e, ou s&eacute;lectionner l'entr&eacute;e et appuyez sur ENTER.
-Si "Autoriser l'&eacute;dition dans les cellules du tableau" n'est pas coch&eacute;
-dans la fen&ecirc;tre de dialogue <strong>Options -->
-Pr&eacute;f&eacute;rences --> G&eacute;n&eacute;ral</strong>, un double-clic n'importe
-o&ugrave; sur la ligne correspondant &agrave; l'entr&eacute;e ouvrira la fen&ecirc;tre d'&eacute;dition.
+href="EntryEditorHelp.html">fen&ecirc;tre d'&eacute;dition</a> sur une entr&eacute;e existante,
+double-cliquez simplement sur la ligne correspondant &agrave; l'entr&eacute;e (ou appuyez sur ENTREE après avoir s&eacute;lectionner l'entr&eacute;e).
 
 <H2>R&eacute;f&eacute;rencer une cha&icirc;ne <em>BibTeX</em> dans un champ</H2>
-Dans JabRef vous &eacute;crivez le contenu de tous les champs de la m&ecirc;me 
+Dans JabRef vous &eacute;crivez le contenu de tous les champs de la m&ecirc;me
 fa&ccedil;on que dans un &eacute;diteur de texte, &agrave; une exception pr&egrave;s&nbsp;: pour
 r&eacute;f&eacute;rencer une cha&icirc;ne, entourer le nom de la cha&icirc;ne avec le caract&egrave;re #,
 tel que dans&nbsp;:<BR>
index ab4dc1f..cfa527e 100644 (file)
-<HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//FR">
+<html><head></head>
 
-<BODY text="#275856">
+<body style="color: rgb(39, 88, 86);">
 <basefont size="4" color="#2F4958" face="arial">
 
-<H1>A propos de <em>BibTeX</em></H1>
+<h1>A propos de <em>BibTeX</em></h1>
+
 
 JabRef vous aide &agrave; travailler avec vos bases de donn&eacute;es <em>BibTeX</em>,
 mais certaines r&egrave;gles doivent &ecirc;tre gard&eacute;es &agrave; l'esprit lorsque vous
-&eacute;ditez vos entr&eacute;es afin le traitement correct de vos bases de donn&eacute;es par le programme <em>BibTeX</em>.
+&eacute;ditez vos entr&eacute;es afin d'obtenir un traitement correct de vos bases de donn&eacute;es par le programme <em>BibTeX</em>.
+
 
-<H2>Les champs <em>BibTeX</em></H2>
+<h2>Les champs <em>BibTeX</em></h2>
 
 Il y a un grand nombre de champs possibles dans <em>BibTeX</em>, et
 quelques champs en plus que vous pouvez param&eacute;trer dans JabRef.
-
-<P>
+<p>
 G&eacute;n&eacute;ralement, vous pouvez utiliser des commandes LaTeX &agrave; l'int&eacute;rieur
 de champs contenant du texte. <em>BibTeX</em> formatera automatiquement
 vos listes de r&eacute;f&eacute;rences et les champs qui sont inclus dans ces
 listes seront mis en majuscules/minuscules selon votre style bibliographique. Pour &ecirc;tre certain que certains caract&egrave;res restent en majuscules, encadrez-les
 par des accolades, comme dans le mot {B}elgique.
 
-<P>
+</p>
+
+
+
+<p>
 Notes &agrave; propos de certains types de champs&nbsp;:
+</p>
+
+
+
 <ul>
-<li><em>Author</em>&nbsp;: Ce champ doit contenir la liste compl&egrave;te
-des auteurs de votre entr&eacute;e. Les noms sont s&eacute;par&eacute;s par le mot
-<em>and</em> m&ecirc;me s'il y a plus de deux auteurs. Chaque nom peut
-&ecirc;tre &eacute;crit indiff&eacute;remment selon une des deux formes suivantes&nbsp;:<br>
- Donald E. Knuth <em>ou</em> Knuth, Donald E.<br>
- Eddie van Halen <em>ou</em> van Halen, Eddie<br>
 
-La seconde forme doit &ecirc;tre utilis&eacute;e pour les auteurs qui ont des noms
-compos&eacute;s (afin de diff&eacute;rencier entre pr&eacute;noms et noms).
-<li><em>Editor</em>&nbsp;: Ce champ est analogue au champ <em>author</em>.
 
-<li><em>Year</em>&nbsp;: Ann&eacute;e de la publication. Ce champ est requis pour
-la plupart des types d'entr&eacute;es. 
 
-<li><em>Bibtexkey</em>&nbsp;: C'est une cha&icirc;ne unique utilis&eacute;e pour r&eacute;f&eacute;rencer
+<li><strong style="font-style: italic;">Bibtexkey</strong>
+C'est une cha&icirc;ne unique utilis&eacute;e pour r&eacute;f&eacute;rencer
 l'entr&eacute;e dans les documents LaTeX. Notez que lorsque vous r&eacute;f&eacute;rencez une entr&eacute;e
 dans LaTeX, la clef doit respecter la casse (majuscules/minuscules) de la cha&icirc;ne
 de r&eacute;f&eacute;rence.
+    <br>
+</li>
+
+  <li><strong>address<br>
+    </strong>Habituellement l'adresse de l'<tt>éditeur commercial</tt> ("publisher" en anglais) ou d'un autre type d'institution.
+Pour les principales maisons d'édition,
+van&nbsp;Leunen recommande d'omettre complètement cette information.
+Pour les petites maisons d'édition, d'un autre coté, vous pouvez aider le lecteur en donnant l'adresse complète.
+    <p>
+    </p>
+  </li>
+  <li><strong>annote<br>
+    </strong>Une annotation.
+Ce champ n'est pas utilisé par les styles bibliographiques standards, mais peut être utilisé par d'autres styles qui produisent une bibliographie annotée.
+    <p>
+    </p>
+  </li>
+  <li><strong>author<br>
+    </strong>Ce champ doit contenir la liste complète des auteurs de votre entrée. Les noms sont séparés par le mot <em>and</em>, même si il y a plus de deux auteurs. Chaque nom peut être écrit dans deux formes équivalentes&nbsp;:<br>
+
+ Donald E. Knuth <em>ou</em> Knuth, Donald E.<br>
+
+ Eddie van Halen <em>ou</em> van Halen, Eddie<br>
+
+La seconde forme devrait être utilisée pour les auteurs ayants plus de deux noms afin de différencier les seconds prénoms et les noms de famille [NDT: pas sur de la traduction...].
+<br>
+    <br>
+    <span style="font-weight: bold;"></span></li>
+  <li><span style="font-weight: bold;"></span><strong>booktitle<br>
+    </strong>Titre d'un livre, dont une partie est citée.
+Pour les entrées du type "book", utilisez le champ <tt>title</tt>.
+    <p>
+    </p>
+  </li>
+  <li><strong>chapter<br>
+    </strong>Un numéro de chapitre (ou de partie, ou d'autre chose).
+    <p>
+    </p>
+  </li>
+  <li><strong>crossref<br>
+    </strong>La clef de l'entrée vers laquelle on effectue le renvoi.
+    <p>
+    </p>
+  </li>
+  <li><strong>edition<br>
+    </strong>Le numéro d'édition d'un livre -- par exemple "Troisième".
+Cela doit être un nombre, et la première lettre doit être capitalisée, comme montré ici&nbsp;;
+les styles standards la convertisse en minuscule si nécessaire.
+    <p>
+    </p>
+  </li>
+  <li><strong>editor<br>
+    </strong>Ce champ est analogue au champ <em>author</em>.
+    Il permet d'indiquer le nom des éditeurs scientifiques, coordonateurs, etc.
+
+    <p>
+    </p>
+  </li>
+  <li><strong>howpublished<br>
+    </strong>Comment quelque chose de non-standard a été publiée.
+Le premier mot prend une majuscule.
+    <p>
+    </p>
+  </li>
+  <li><strong>institution<br>
+    </strong>L'institution ayant promue un rapport technique.
+    <p>
+    </p>
+  </li>
+  <li><strong>journal<br>
+    </strong>Un nom de journal.
+Le nom d'un journal peut être abrégé en utilisant une "chaîne".
+Pour définir une chaîne, utilisez <a href="StringEditorHelp.html">l'éditeur de chaînes</a>.
+    <p>
+    </p>
+  </li>
+  <li><strong>key<br>
+    </strong>utilisé pour alphabétiser, renvoyer et créer une étiquette quand l'information sur "author" est manquante.
+Ce champ ne doit pas être confondu avec la clef qui est fournie dans la commande
+    <code>\cite</code> et au début de l'entrée.
+    <p>
+    </p>
+  </li>
+  <li><strong>month<br>
+    </strong>Le mois au cours duquel le travail a été
+publié ou, pour un travail non publié, au cours duquel il a été écrit.
+Vous devriez utiliser l'abréviation standard à trois lettres (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec).
+    <p>
+    </p>
+  </li>
+  <li><strong>note<br>
+    </strong>Toute information additionnelle qui peut aider le lecteur.
+Le premier mot doit prendre une majuscule.
+    <p>
+    </p>
+  </li>
+  <li><strong>number</strong><br>
+Le numéro d'un journal, d'un magazine, d'un rapport technique
+ou d'un travail dans une série.
+Les journaux et les magazines sont habituellement
+identifiés par leur volume et leur numéro&nbsp;;
+l'organisation qui publie un
+rapport technique lui donne en général un numéro&nbsp;;
+et parfois les livres portent des numéros
+lorsqu'ils appartiennent à une série nommée.
+    <p>
+    </p>
+  </li>
+  <li><strong>organization<br>
+    </strong>L'organisation ayant promue une conférence ou qui publie un manuel.
+    <p>
+    </p>
+  </li>
+  <li><strong>pages<br>
+    </strong>Un ou plusieurs numéros de page, ou une gamme de numéros,
+tel que <tt>42-111</tt> ou <tt>7,41,73-97</tt> ou <tt>43+</tt>
+(le `<tt>+</tt>' dans le dernier exemple indique des pages suivantes
+qui ne sont pas dans un ordre simple).
+Pour garder facilement la compatibilité avec les bases de données compatibles
+<em>Scribe</em>, les styles standards convertissent le tiret simple
+(comme dans <tt>7-33</tt>)
+en un tiret double utilisé par TeX pour définir une gamme de nombres
+(comme dans <tt>7-33</tt>).
+    <p>
+    </p>
+  </li>
+  <li><strong>publisher<br>
+    </strong>Le nom de l'éditeur commercial.
+    <p>
+    </p>
+  </li>
+  <li><strong>school<br>
+    </strong>Le nom de l'école où a été écrite une thèse.
+    <p>
+    </p>
+  </li>
+  <li><strong>series<br>
+    </strong>Le nom d'une série ou d'un ensemble de livres.
+Quand on cite un livre entier, le champ <tt>title</tt>
+donne son titre et le champ optionnel <tt>series</tt> donne le
+nom de la série ou de l'ensemble de volumes
+dans lequel le livre est publié.
+    <p>
+    </p>
+  </li>
+  <li><strong>title<br>
+    </strong>Le titre du travail. La capitalisation dépend du
+style bibliographique et de la langue utilisés. Pour les mots qui
+doivent être capitalisés (tel un nom propre), mettre le mot
+(ou sa première lettre) entre accolades.
+    <p>
+    </p>
+  </li>
+  <li><strong>type<br>
+    </strong>Le type de rapport technique -- par exemple,
+"Note de recherche".
+    <p>
+    </p>
+  </li>
+  <li><strong>volume<br>
+    </strong>Le volume d'un journal ou d'un livre en plusieurs tomes.
+    <p>
+    </p>
+  </li>
+  <li><strong>year<br>
+    </strong>L'année de publication ou, pour
+un travail non publié, l'année où il a été écrit.
+Généralement, elle doit prendre quatre chiffres, tel que <tt>1984</tt>,
+cependant les styles standards peuvent gérer toute valeur de <tt>year</tt>
+dont les quatre derniers caractères sont des chiffres (hors caractères de ponctuation),
+tel que `(autour de 1984)'. Ce champ est requis par la plupart des types d'entrées.
+</li>
+</ul>
+
+
+<br>
+
+
+<h2>Autres champs</h2>
+
+BibTeX est très populaire, et beaucoup de gens l'ont utilisé pour stocker
+des informations. Voici une liste de quelque uns des champs les plus communs&nbsp;:
+
+<dl>
+
+
+</dl>
+
+<ul>
+
+  <li><strong><span style="font-weight: normal; font-style: italic;">affiliation*</span><br>
+    </strong>L'affiliation des auteurs.<br>
+    <br>
+
+  </li>
+  <li><strong>abstract<br>
+    </strong>Le résumé d'un travail.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">contents*</span><br>
+    </strong>La table des matières<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">copyright*</span><br>
+    </strong>Informations sur les droits d'auteur (copyright).<br>
+    <br>
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">ISBN*</span><br>
+    </strong>L'"International Standard Book Number".<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">ISSN*</span><br>
+    </strong>L'"International Standard Serial Number".  Utilisé pour identifier un journal.<br>
+    <br>
+
+  </li>
+  <li><strong>keywords<br>
+    </strong>Mots-clefs utilisés pour la recherche, ou pour annotation.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">language*</span><br>
+    </strong>La langue du document.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">location*</span><br>
+    </strong>Une localisation associée avec l'entrée, telle que la ville où la conférence a eu lieu.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">LCCN*</span><br>
+    </strong>Le "Library of Congress Call Number".  Champ parfois nommé <tt>lib-congress</tt>.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">mrnumber*</span><br>
+    </strong>Le numéro de <i>Mathematical Reviews</i>.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">price*</span><br>
+    </strong>Le prix du document.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">size*</span><br>
+    </strong>La taille physique d'un travail.<br>
+    <br>
+
+  </li>
+  <li><strong>URL<br>
+    </strong>Le "WWW Universal Resource Locator" (adresse URL)
+    qui pointe vers l'élément référencé.
+    C'est souvent utilisé pour les rapports techniques afin d'indiquer
+    le site ftp où la source postscript du rapport est localisée.
+  </li>
+</ul>
+
+<dl>
+
+
+</dl>
+
+
+
+
+
+
+<h3><br>
+</h3>
+
+
+
+<h3>JuraBib</h3>
+
+
+
+
+<ul>
+
+  <li><strong>urldate<br>
+    </strong>La date de la dernière visite de la page.</li>
 
 </ul>
 
 
-</HTML>
+<br>
+
+*) non supporté directement par JabRef<br>
+
+
+
+
+
+
+
+<br>
+
+
+
+</body></html> 
\ No newline at end of file
index cce9a83..ec5efd7 100644 (file)
@@ -11,8 +11,8 @@
 JabRef peut r&eacute;cup&eacute;rer de l'information sur une entr&eacute;e particuli&egrave;re &agrave; partir de la base de donn&eacute;es CiteSeer. Pour initier ce processus, ajoutez une nouvelle entr&eacute;e dans votre base de donn&eacute;es et renseignez le champ citeseerurl avec un lien vers la page de contenu sur CiteSeer. Le champ citeseerurl doit &ecirc;tre rempli avec l'un des formats suivants :
 </p>
 <p>
-http://citeseer.ist.psu.edu/DDDDDD[.html], or <br>
-oai:CiteSeerPSU:DDDDDD, or <br>
+http://citeseer.ist.psu.edu/DDDDDD[.html], ou <br>
+oai:CiteSeerPSU:DDDDDD, ou <br>
 DDDDDD
 </p>
 <p>
@@ -25,7 +25,7 @@ Une fois que vous avez renseign&eacute; le champ citeseerurl, vous pouvez t&eacu
 <h2>G&eacute;n&eacute;ration d'une base de citations</h2>
 
 <p>
-A partir d'une s&eacute;rie de r&eacute;f&eacute;rences, vous pouvez g&eacute;n&eacute;rer une liste de documents qui citent les &eacute;l&eacute;ments de cette liste. Pour faciliter cette op&eacute;ration, chaque citation de la base de donn&eacute;es doit avoir son champ citeseerurl rempli selon l'un des formats indiqu&eacute;s dans <b>R&eacute;cup&eacute;ration d'une entr&eacute;e depuis CiteSeer</b>. Pour r&eacute;aliser cette op&eacute;ration, s&eacute;lectionnez <b>Outils -> Recherche de citations dans CiteSeer</b>.
+A partir d'une s&eacute;rie de r&eacute;f&eacute;rences, vous pouvez g&eacute;n&eacute;rer une liste de documents qui citent les &eacute;l&eacute;ments de cette liste. Pour faciliter cette op&eacute;ration, chaque citation de la base de donn&eacute;es doit avoir son champ citeseerurl rempli selon l'un des formats indiqu&eacute;s dans <b>R&eacute;cup&eacute;ration d'une entr&eacute;e depuis CiteSeer</b>. Pour r&eacute;aliser cette op&eacute;ration, s&eacute;lectionnez <b>Recherche internet -> Recherche de citations dans CiteSeer</b>.
 </p>
 
 <h2>Utilisation d'un serveur proxy</h2>
index b2a7919..b4f5b93 100644 (file)
@@ -38,7 +38,7 @@ qui appara&icirc;t normalement au d&eacute;marrage de l'application. Elle
 permet la sortie du programme imm&eacute;diatement apr&egrave;s
 l'ex&eacute;cution des autres options.
 
-<p>Cette option est particuli&egrave;rement utile pour r&eacute;aliser
+<p>Cette option est quelque fois utile pour r&eacute;aliser
 des op&eacute;rations de conversion &agrave; partir de la ligne de
 commande ou dans un script.</p>
 
index b953d82..bf33f41 100644 (file)
@@ -10,7 +10,7 @@
 <h1>S&eacute;lecteur de contenu de champ</h1>
 
 <p>
-Cette op&eacute;ration vous permet d'enregistrer une s&eacute;lection de mots et de phrases que vous utilisez souvent dans votre base de donn&eacute;es. Par d&eacute;faut, c'est possible avec les champs <em>Journal</em>, <em>Keywords</em> et <em>Publisher</em> mais vous pouvez aussi ajouter des s&eacute;lecteurs &agrave; d'autres champs, en utilisant la partie sup&eacute;rieure de la fen&ecirc;tre <i>G&eacute;rer les s&eacute;lecteurs</i> (menu <strong> Outils --> G&eacute;rer les s&eacute;lecteurs de contenu</strong>).
+Cette op&eacute;ration vous permet d'enregistrer une s&eacute;lection de mots et de phrases que vous utilisez souvent dans votre base de donn&eacute;es. Par d&eacute;faut, c'est possible avec les champs <em>Journal</em>, <em>Author</em>, <em>Keywords</em> et <em>Publisher</em> mais vous pouvez aussi ajouter des s&eacute;lecteurs &agrave; d'autres champs, en utilisant la partie sup&eacute;rieure de la fen&ecirc;tre <i>G&eacute;rer les s&eacute;lecteurs</i> (menu <strong> Outils --> G&eacute;rer les s&eacute;lecteurs de contenu</strong>).
 </p>
 
 <p>
index 239bd7f..5f97116 100644 (file)
@@ -20,6 +20,7 @@
     <a href="EntryEditorHelp.html">Éditeur d'entr&eacute;es</a><br>
     <a href="CiteSeerHelp.html">R&eacute;cup&eacute;ration des entr&eacute;es depuis <em>CiteSeer</em></a><br>
     <a href="MedlineHelp.html">R&eacute;cup&eacute;ration des entr&eacute;es depuis <em>Medline</em></a><br>
+    <a href="IEEEXploreHelp.html">R&eacute;cup&eacute;ration des entr&eacute;es depuis <em>IEEExplore</em></a><br>
     <a href="ContentSelectorHelp.html">S&eacute;lecteur de contenu de champ</a><br>
     <a href="JournalAbbreviations.html">Abr&eacute;viations de journaux</a><br>
     <a href="GroupsHelp.html">Utilisation des <em>Groupes</em></a><br>
index df7a6fb..eafd922 100644 (file)
@@ -12,7 +12,7 @@ JabRef vous permet de d&eacute;finir et d'utiliser vos propres filtres d'exporta
 <h2>Ajout d'un filtre d'exportation personnalis&eacute; </h2>
 
 <p>
-La seule obligation pour avoir un filtre d'exportation valide est l'existence d'un fichier avec l'extension <b>.layout</b>. Pour ajouter un nouveau filtre d'exportation, on utilise le menu <b>Options -> G&eacute;rer les exportations personnalis&eacute;es</b>, et on clique sur <b>Ajouter nouvelle</b>. Une nouvelle boite de dialogue appara&icirc;t et vous permet de sp&eacute;cifier un nom pour le nouveau filtre d'exportation (ce nom appara&icirc;tra dans le menu <b>Fichier -> Exportation personnalis&eacute;e</b> de la fen&ecirc;tre JabRef), le chemin du fichier <b>.layout</b> et l'extension pr&eacute;f&eacute;r&eacute;e pour les fichiers cr&eacute;es par le filtre d'exportation (c'est cette extension qui sera sugg&eacute;r&eacute;e dans la boite de dialogue lorsque l'on utilisera le filtre).
+La seule obligation pour avoir un filtre d'exportation valide est l'existence d'un fichier avec l'extension <b>.layout</b>. Pour ajouter un nouveau filtre d'exportation, on utilise le menu <b>Options -> G&eacute;rer les exportations personnalis&eacute;es</b>, et on clique sur <b>Ajouter nouvelle</b>. Une nouvelle boite de dialogue appara&icirc;t et vous permet de sp&eacute;cifier un nom du nouveau filtre d'exportation (ce nom appara&icirc;tra dans le menu <b>Fichier -> Exportation personnalis&eacute;e</b> de la fen&ecirc;tre JabRef), le chemin du fichier <b>.layout</b>, et l'extension de fichier pr&eacute;f&eacute;r&eacute;e par le filtre d'exportation (c'est cette extension qui sera sugg&eacute;r&eacute;e dans la boite de dialogue lorsque le filtre sera utilisé).
 </p>
 
 <h2>Cr&eacute;ation d'un filtre d'exportation</h2>
@@ -95,10 +95,10 @@ Vous pouvez aussi indiquer plusieurs formateurs s&eacute;par&eacute;s par des vi
 <code>\format[ToLowerCase,HTMLChars]{\author}</code>
 </p>
 <p>
-va d'abord appliqu&eacute; le formateur <b>ToLowerCase</b> puis <b>HTMLChars</b> sur le r&eacute;sultat. Vous pouvez lister un nombre arbitraire de formateurs de cette mani&egrave;re.
+va d'abord appliquer le formateur <b>ToLowerCase</b> puis <b>HTMLChars</b> sur le r&eacute;sultat. Vous pouvez lister un nombre arbitraire de formateurs de cette mani&egrave;re.
 </p>
 
-<p>Le param&egrave;tre des formateurs, entre les accolades, n'est pas obligatoirement une commande de champ. Vous pouvez y ins&eacute;rer du texte normal, qui sera alors pass&eacute; aux formateurs au lieu des contenues de tout champ [NdT : pas s&ucirc;r d'avoir bien compris...]. Cela peut-&ecirc;tre utile avec certains formateurs, par exemple le formateur CurrentDate (voir ci-dessous).
+<p>Le param&egrave;tre des formateurs, entre les accolades, n'est pas obligatoirement une commande de champ. Vous pouvez y ins&eacute;rer du texte normal, qui sera alors pass&eacute; comme argument au formateur. Cela peut-&ecirc;tre utile avec certains formateurs, par exemple le formateur CurrentDate (voir ci-dessous).
 </p>
 
 <p>
index ca1cb1a..ef9ec19 100644 (file)
 
 <H2>Ajouter un filtre d'importation personnalis&eacute;</H2>
 
-<p>Assurez-vous que vous avez un filtre d'importation personnalis&eacute; compil&eacute; (un ou plusieurs fichiers <code>.class</code> sont d&eacute;crits ci-dessous) et que les fichiers de classe soient dans la structure des r&eacute;pertoires selon la structure de leur paquetage. Pour ajouter un nouveau filtre d'importation personnalis&eacute;, ouvrez la bo&icirc;te de dialogue <b>Options -> G&eacute;rer les importations personnalis&eacute;es</b>, et cliquer <b>Ajouter &agrave; partir du r&eacute;pertoire</b>. 
-Un s&eacute;lectionneur de fichier appara&icirc;tra, vous permettant de s&eacute;lectionner le chemin de classe de votre filtre d'importation, c'est &agrave; dire le r&eacute;pertoire o&ugrave; se trouve le r&eacute;pertoire sup&eacute;rieur de votre structure de paquetage. Dans un second s&eacute;lectionneur de fichier vous s&eacute;lectionnez votre fichier de classe de filtre d'importation, lequel doit d&eacute;river de <code>ImportFormat</code> [NdT&nbsp;: pas tout compris...]. En cliquant sur
-<b>S&eacute;lectionner une nouvelle sous-classe de format d'importation</b>, votre nouveau filtre d'importation appara&icirc;tra dans la liste des filtres d'importation personnalis&eacute;s. Tous les filtres d'importations personnalis&eacute;s appara&icirc;tront dans le menu <b>Fichier -> Importer -> 
-Filtres d'importation personnalis&eacute;s</b> et <b>Fichier -> Importer et joindre -> Filtres d'importation personnalis&eacute;s</b> de la fen&ecirc;tre de JabRef.</p>
-
-
-
-<p>S'il vous pla&icirc;t, notez que si vous d&eacute;placer la classe vers un autre r&eacute;pertoire, vous aurez &agrave; supprimer et &agrave; r&eacute;-ajouter le filtre d'importation. Si vous ajouter un filtre d'importation personnalis&eacute; sous un nom qui existe d&eacute;j&agrave;, le filtre d'importation existant sera remplac&eacute;. De plus, dans certains cas, il est possible de mettre &agrave; jour un filtre d'importation personnalis&eacute; existant sans red&eacute;marrer JabRef (lorsque le filtre d'importation n'est pas dans le chemin de classe). Cependant, nous recommandons de red&eacute;marrer JabRef apr&egrave;s la mise &agrave; jour d'un filtre d'importation personnalis&eacute;. Vous pouvez aussi ajouter des filtres d'importation contenu dans un fichier ZIP ou JAR&nbsp;; s&eacute;lectionnez simplement l'archive Zip ou Jar, puis l'entr&eacute;e (fichier de classe) qui correspond au nouveau filtre d'importation.</p>
+<p>Assurez-vous que vous avez un filtre d'importation personnalis&eacute; compil&eacute; (un ou plusieurs fichiers <code>.class</code> sont d&eacute;crits ci-dessous) et que les fichiers de classe soient dans la structure des r&eacute;pertoires selon la structure de leur paquetage. Pour ajouter un nouveau filtre d'importation personnalis&eacute;, ouvrez la bo&icirc;te de dialogue <b>Options -&gt; G&eacute;rer les importations personnalis&eacute;es</b>, et cliquez&nbsp; <b>Ajouter &agrave; partir du r&eacute;pertoire</b>. Une fen&ecirc;tre de s&eacute;lection de fichier appara&icirc;tra, vous permettant de s&eacute;lectionner le chemin de classe de votre filtre d'importation, c'est &agrave; dire le r&eacute;pertoire o&ugrave; se trouve le r&eacute;pertoire sup&eacute;rieur de votre structure de paquetage. Vous ouvrirez autant de&nbsp; fen&ecirc;tres que n&eacute;cessaire pour s&eacute;lectionner votre fichier de classe de filtre d'importation, lequel doit d&eacute;river de <code>ImportFormat</code>. Cela permettra ainsi d'indiquer le chemin complet d'acc&egrave;s au fichier de classe. En cliquant sur <b>S&eacute;lectionner une nouvelle sous-classe de format d'importation</b>, votre nouveau filtre d'importation appara&icirc;tra dans la liste des filtres d'importation personnalis&eacute;s. Tous les filtres d'importations personnalis&eacute;s appara&icirc;tront dans le menu <b>Fichier -&gt; Importer -&gt; Filtres d'importation personnalis&eacute;s</b> et <b>Fichier -&gt; Importer et joindre -&gt; Filtres d'importation personnalis&eacute;s</b> de la fen&ecirc;tre de JabRef.</p> <p>S'il vous pla&icirc;t, notez que si vous d&eacute;placez la classe vers un autre r&eacute;pertoire, vous aurez &agrave; supprimer et &agrave; r&eacute;-ajouter le filtre d'importation. Si vous ajoutez un filtre d'importation personnalis&eacute; sous un nom qui existe d&eacute;j&agrave;, le filtre d'importation existant sera remplac&eacute;. De plus, dans certains cas, il est possible de mettre &agrave; jour un filtre d'importation personnalis&eacute; existant sans red&eacute;marrer JabRef (lorsque le filtre d'importation n'est pas dans le chemin de classe). Cependant, nous recommandons de red&eacute;marrer JabRef apr&egrave;s la mise &agrave; jour d'un filtre d'importation personnalis&eacute;. Vous pouvez aussi ajouter des filtres d'importation contenu dans un fichier ZIP ou JAR&nbsp;; s&eacute;lectionnez simplement l'archive Zip ou Jar, puis l'entr&eacute;e (fichier de classe) qui correspond au nouveau filtre d'importation.</p>
 
 
 <H2>Cr&eacute;er un filtre d'importation</H2>
 
-Pour des exemples et quelques fichiers utiles sur la fa&ccedil;on de construire vos propres filtres d'importation, consulter s'il vous pla&icirc;t la page de t&eacute;l&eacute;chargement.
+Pour des exemples et quelques fichiers utiles sur la fa&ccedil;on de construire vos propres filtres d'importation, consultez s'il vous pla&icirc;t la page de t&eacute;l&eacute;chargement.
 
 
 <H3>Un exemple simple</H3>
@@ -83,10 +76,10 @@ javac -classpath JabRef-2.0.jar SimpleCsvImporter.java
 </pre>
 A pr&eacute;sent il doit y avoir un fichier <code>/mypath/SimpleCsvImporter.class</code>.</p>
 
-<p>Dans JabRef, ouvrez <b>Options -> G&eacute;rer les importations personnalis&eacute;es</b>, et cliquez sur <b>Ajouter &agrave; partir du r&eacute;pertoire</b>.
-Aller dans <code>/mypath</code> et cliquer le bouton <b>S&eacute;lectionner...</b>. S&eacute;lectionnez 
-<code>SimpleCsvImporter.class</code> et cliquer sur le bouton <b>S&eacute;lectionner...</b>.
-Votre filtre d'importation devrait maintenant appara&icirc;tre dans la liste des filtres d'importation personnalis&eacute;s sous le nom "Simple CSV Importer" et, apr&egrave;s avoir cliqu&eacute; sur <b>Fermer</b>, aussi dans les menus <b>Fichier -> Importer -> Filtres d'importation personnalis&eacute;s</b> et <b>Fichier -> Importer et joindre -> Filtres d'importation personnalis&eacute;s</b> de la fen&ecirc;tre de JabRef.</p>
+<p>Dans JabRef, ouvrez <b>Options -&gt; G&eacute;rer les importations personnalis&eacute;es</b>, et cliquez sur <b>Ajouter &agrave; partir du r&eacute;pertoire</b>.
+Allez dans <code>/mypath</code> et cliquez le bouton <b>S&eacute;lectionner...</b>. S&eacute;lectionnez 
+<code>SimpleCsvImporter.class</code> et cliquez sur le bouton <b>S&eacute;lectionner...</b>.
+Votre filtre d'importation devrait maintenant appara&icirc;tre dans la liste des filtres d'importation personnalis&eacute;s sous le nom "Simple CSV Importer" et, apr&egrave;s avoir cliqu&eacute; sur <b>Fermer</b>, aussi dans les menus <b>Fichier -&gt; Importer -&gt; Filtres d'importation personnalis&eacute;s</b> et <b>Fichier -&gt; Importer et joindre -&gt; Filtres d'importation personnalis&eacute;s</b> de la fen&ecirc;tre de JabRef.</p>
 
 <H2>Partager votre travail</H2>
 
index fd44951..38816bf 100644 (file)
@@ -5,21 +5,19 @@
 
 <H1>L'&eacute;diteur d'entr&eacute;es</H1>
 
-<em>On l'ouvre &agrave; partir de la fen&ecirc;tre principale en double-cliquant
-sur la colonne la plus &agrave; gauche de l'entr&eacute;e (en double-cliquant n'importe
-o&ugrave; sur la ligne de l'entr&eacute;e si "Autoriser l'&eacute;dition dans les cellules
-du tableau" n'est pas coch&eacute;e dans <strong>Options --> Pr&eacute;f&eacute;rences --> G&eacute;n&eacute;ral</strong>),
-ou en appuyant sur ENTER. L'&eacute;diteur d'entr&eacute;es se ferme en appuyant sur ESC.</em>
+<em>On l'ouvre &agrave; partir de la fen&ecirc;tre principale en double-cliquant n'importe o&ugrave;
+sur la ligne de l'entr&eacute;e,
+ou en s&eacute;lectionnant l'entr&eacute;e et en appuyant sur ENTREE. L'&eacute;diteur d'entr&eacute;es se ferme en appuyant sur ESC.</em>
 <P>
 Dans l'&eacute;diteur d'entr&eacute;es, vous pouvez sp&eacute;cifier toutes les informations pertinentes
-pour une entr&eacute;e donn&eacute;e. L'&eacute;diteur d'entr&eacute;es v&eacute;rifie le type de votre entr&eacute;e et 
+pour une entr&eacute;e donn&eacute;e. L'&eacute;diteur d'entr&eacute;es v&eacute;rifie le type de votre entr&eacute;e et
 affiche tous les champs qui sont requis ou optionnels pour que <em>BibTeX</em>
 traite l'entr&eacute;e. De plus, il y a plusieurs champs, appel&eacute;s <em>Champs
 g&eacute;n&eacute;raux</em>, qui sont communs &agrave; tous les types d'entr&eacute;es.
 
 <P>Vous pouvez personnaliser compl&egrave;tement les champs qui doivent &ecirc;tre consid&eacute;r&eacute;s comme
 requis ou optionnel pour chaque type d'entr&eacute;e, ainsi que les champs apparaissant dans
-l'onglet Champs g&eacute;n&eacute;raux. Voir <a href="CustomEntriesHelp.html">Personnaliser les types
+l'onglet G&eacute;n&eacute;ral. Voir <a href="CustomEntriesHelp.html">Personnaliser les types
 d'entr&eacute;es</a> pour plus d'informations &agrave; ce sujet.
 
 <P>Pour des informations sur la fa&ccedil;on de remplir les champs,
@@ -27,19 +25,19 @@ voir <a href="BibtexHelp.html">Aide sur BibTeX</a>.
 
 <H2>Le panneau &agrave; onglets de l'&eacute;diteur d'entr&eacute;es</H2>
 
-L'&eacute;diteur d'entr&eacute;e contient cinq onglets&nbsp;:
+L'&eacute;diteur d'entr&eacute;e contient six onglets&nbsp;:
 <em>Champs requis</em>, <em>Champs optionnels</em>,
-<em>Champs g&eacute;n&eacute;raux</em>, <em>Abstract</em>
-et <em>Source BibTeX</em>. Les onglets <em>Champs g&eacute;n&eacute;raux</em> et
-<em>Abstract</em> peuvent &ecirc;tre personnalis&eacute;s (voir <a href="GeneralFields.html">Personnalisation des champs g&eacute;n&eacute;raux</a> pour plus de d&eacute;tails). A l'int&eacute;rieur des trois premiers onglets, TAB et SHIFT-TAB sont utilis&eacute;s pour naviguer entre les champs de texte.
+<em>G&eacute;n&eacute;ral</em>, <em>Abstract</em>, <em>Review</em>
+et <em>Source BibTeX</em>. Les onglets <em>G&eacute;n&eacute;ral</em>,
+<em>Abstract</em> et <em>Review</em> peuvent &ecirc;tre personnalis&eacute;s (voir <a href="GeneralFields.html">Personnalisation des champs g&eacute;n&eacute;raux</a> pour plus de d&eacute;tails). A l'int&eacute;rieur des trois premiers onglets, TAB et MAJ-TAB sont utilis&eacute;s pour naviguer entre les champs de texte.
 
 <P>Naviguez entre les onglets en cliquant sur les onglets
 ou en utilisant les combinaisons de touches suivantes pour vous d&eacute;placer
 vers la gauche ou la droite&nbsp;: CTRL-TAB ou CTRL-PLUS
-affiche l'onglet &agrave; droite, et CTRL-SHIFT-TAB ou CTRL-MOINS
+affiche l'onglet &agrave; droite, et CTRL-MAJ-TAB ou CTRL-MOINS
 affiche l'onglet &agrave; gauche. Vous pouvez aussi afficher l'entr&eacute;e pr&eacute;c&eacute;dente ou
-suivante en appuyant respectivement sur CTRL-SHIFT-DOWN ou
-CTRL-SHIFT-UP, ainsi qu'en cliquant sur les boutons de la barre
+suivante en appuyant respectivement sur CTRL-MAJ-DOWN ou
+CTRL-MAJ-UP, ainsi qu'en cliquant sur les boutons de la barre
 d'outils de l'&eacute;diteur d'entr&eacute;es.
 
 <P>L'onglet <em>Source BibTeX</em> montre comment l'entr&eacute;e
@@ -65,24 +63,24 @@ ne conna&icirc;t pas, ils seront visibles dans l'onglet <em>Source
 BibTeX</em>.
 
 <P><strong>Astuce&nbsp;:</strong> les champs <I>pdf</I> et <I>url</I>
-supportent les op&eacute;rations de Glisser-D&eacute;placer. 
-Vous pouvez faire glisser une url depuis votre navigateur. 
-Ensuite, vous aurez le choix entre ins&eacute;rer l'URL et 
-t&eacute;l&eacute;charg&eacute; le fichier.
+supportent les op&eacute;rations de Glisser-D&eacute;placer.
+Vous pouvez faire glisser une url depuis votre navigateur.
+Ensuite, vous aurez le choix entre ins&eacute;rer l'URL et
+t&eacute;l&eacute;charger le fichier.
 
 <H2>V&eacute;rification de la coh&eacute;rence des champs</H2>
 Quand le contenu d'un champ est modifi&eacute;, JabRef v&eacute;rifie que le nouveau
 contenu est acceptable. Pour les champs qui sont utilis&eacute;s par
 <em>BibTeX</em>, le contenu est v&eacute;rifi&eacute; par rapport &agrave; l'utilisation
 du caract&eacute;re '#'. Le symbole di&egrave;se doit <em>toujours</em> &ecirc;tre
-utilis&eacute; par paires, encadrant le nom d'une cha&icirc;ne <em>BibTeX</em> 
+utilis&eacute; par paires, encadrant le nom d'une cha&icirc;ne <em>BibTeX</em>
 existante. Notez que JabRef ne v&eacute;rifie pas si la cha&icirc;ne <em>BibTeX</em>
 est vraiment d&eacute;finie (ce n'est pas trivial, puisque le style
 <em>BibTeX</em> que vous utilisez peut d&eacute;finir une s&eacute;rie
 arbitraire de cha&icirc;nes dont JabRef n'a pas connaissance).
 <P>
 Si le contenu n'est pas valide, le champ sera affich&eacute; en rouge,
-indiquant ainsi une erreur. Dans ce cas, le changement ne 
+indiquant ainsi une erreur. Dans ce cas, le changement ne
 sera pas sauv&eacute;.
 
 <!--<H2>Word/name autocompletion</H2>
index ac80369..1592cb1 100644 (file)
@@ -16,7 +16,7 @@ PDF et PS ainsi que pour les pages internet. Ils sont par d&eacute;faut configur
 avec des valeurs qui fonctionnent probablement avec votre syst&egrave;me d'exploitation&nbsp;;
 aussi, il est tr&egrave;s possible que vous n'ayez pas besoin de changer ces valeurs
 <p>Pour changer la configuration des visionneurs externes, allez dans le menu
-<b>Options/ Pr&eacute;f&eacute;rences -> G&eacute;n&eacute;ral</b>.
+<b>Options -> Pr&eacute;f&eacute;rences -> Programmes externes</b>.
 
 <H2>Ouvrir des fichiers externes ou des liens</H2>
 
@@ -32,36 +32,48 @@ sur les ic&ocirc;nes PDF, PS, URL ou DOI de la barre d'outils.
 lesquelles des ic&ocirc;nes s'affichent pour les entr&eacute;es poss&eacute;dant un lien
 vers un fichier externe ou une URL. La seconde colonne du tableau
 montre les ic&ocirc;nes qui ouvrent les fichiers PDF et PS (uniquement
-le fichier PDF si les deux fichiers sont pr&eacute;sents), 
+le fichier PDF si les deux fichiers sont pr&eacute;sents),
 et la troisi&egrave;me colonne montre les ic&ocirc;nes
 ouvrant les URL et les DOI (uniquement l'URL si les deux liens sont
 pr&eacute;sents). Vous ouvrez le fichier ou la page internet en cliquant
 sur une de ces ic&ocirc;nes. Vous pouvez d&eacute;sactiver n'importe laquelle de ces
 fonctions en utilisant le menu <b>Options/ Pr&eacute;f&eacute;rences -> Table des
-entr&eacute;es</b>. 
+entr&eacute;es</b>.
 
-<H2>Le r&eacute;pertoire PDF principal</H2>
+<P><b>Remarque:</b> Si le champ n'appara&icirc;t pas dans l'&eacute;diteur d'entr&eacute;e (dans l'onglet 'General'),
+Vous pourriez avoir &agrave; <a href="GeneralFields.html">personnaliser les champs g&eacute;n&eacute;raux</a>.
+</P>
 
-Les fichiers PDF ont un traitement particulier afin de les relier aussi
-facilement que possible &agrave; vos entr&eacute;es. Pour b&eacute;n&eacute;ficier de cette fonction,
-vous devez d&eacute;finir un r&eacute;pertoire comme r&eacute;pertoire PDF principal dans
-le menu <b>Options -> Pr&eacute;f&eacute;rences -> Programmes externes</b>.
-Tous les fichiers PDF qui sont stock&eacute;s dans ou en dessous de ce r&eacute;pertoire
-seront r&eacute;f&eacute;renc&eacute;s par un chemin relatif. Il vous sera ainsi facile 
-de d&eacute;placer le r&eacute;pertoire PDF principal ou de partager votre base de donn&eacute;es
+
+<H2>Les r&eacute;pertoires PDF et PS principaux</H2>
+
+JabRef permet de lier facilement les fichiers PDF et PS à vos entrées. Pour b&eacute;n&eacute;ficier de cette fonction,
+vous devez d&eacute;finir dans le menu <b>Options -> Pr&eacute;f&eacute;rences -> Programmes externes</b>
+vos r&eacute;pertoires principaux pour les fichiers PDF et PS.
+Tous les fichiers PDF et PS qui sont stock&eacute;s dans (ou en-dessous de) chacun de ces r&eacute;pertoires
+seront r&eacute;f&eacute;renc&eacute;s par un chemin relatif. Il vous sera ainsi facile
+de d&eacute;placer les r&eacute;pertoires PDF et PS principaux ou de partager votre base de donn&eacute;es
 avec d'autres utilisateurs situ&eacute;s en des points diff&eacute;rents du r&eacute;seau.
 
-<P>De plus, si vous donnez &agrave; vos fichiers PDF des noms qui correspondent &agrave;
-la clef BibTeX des entr&eacute;es (plus '.pdf'), JabRef sera capable de rechercher
-dans le r&eacute;pertoire PDF principal et ses sous-r&eacute;pertoires le bon fichier PDF.
-Lorsqu'un fichier PDF (nomm&eacute; correctement) est dans le r&eacute;pertoire,
-vous acc&eacute;der &agrave; cette fonction en cliquant sur le bouton 'Auto' situ&eacute; &agrave;
-cot&eacute; du champ PDF de l'&eacute;diteur d'entr&eacute;es. Si le fichier PDF est trouv&eacute;,
+<P>De plus, si vous donnez &agrave; vos fichiers PDF et PS des noms qui correspondent &agrave;
+la clef BibTeX des entr&eacute;es (plus '.pdf' ou '.ps'), JabRef sera capable de rechercher
+dans vos r&eacute;pertoires principaux et leurs sous-r&eacute;pertoires le bon fichier PDF ou PS.
+Lorsqu'un fichier PDF ou PS (nomm&eacute; correctement) est d&eacute;j&agrave; dans le r&eacute;pertoire principal,
+vous acc&eacute;dez &agrave; cette fonction en cliquant sur le bouton 'Auto' situ&eacute; &agrave;
+cot&eacute; des champs PDF et PS de l'&eacute;diteur d'entr&eacute;es. Si le fichier PDF ou PS est trouv&eacute;,
 le champ sera imm&eacute;diatement rempli.
 
-<P>Si vous nommez le PDF comme mentionn&eacute; ci-dessus, vous pourrez aussi
-ouvrir le fichier PDF sans configurer pr&eacute;alablement le champ PDF.
-Cependant, dans ce cas, l'ic&ocirc;ne PDF n'appara&icirc;tra pas dans le tableau
+<P>Si vous nommez un fichier PDF ou PS comme mentionn&eacute; ci-dessus, vous pourrez aussi
+ouvrir le fichier sans configurer pr&eacute;alablement le champ PDF ou PS de l'entr&eacute;e.
+Cependant, dans ce cas, l'ic&ocirc;ne PDF ou PS n'appara&icirc;tra pas dans le tableau
 des entr&eacute;es.
 
+<H2>Les r&eacute;pertoires PDF et PS spécifiques &agrave; la base de donn&eacute;es</H2>
+<P>
+Vous pouvez d&eacute;finir des r&eacute;pertoires PDF et PS sp&eacute;cifiques &agrave; une base de donn&eacute;es
+(<b>Fichier -> Propri&eacute;t&eacute;s de la base de donn&eacute;es</b>).
+Ces r&eacute;pertoires remplacent alors les r&eacute;pertoires principaux.
+</P>
+
+
 </HTML>
index 5e5cb55..ec231ae 100644 (file)
@@ -10,16 +10,16 @@ Les groupes permettent de structurer une base de donn&eacute;es BibTeX selon une
 
 <ul>
 <li> Alors qu'un fichier est toujours localis&eacute; dans un seul r&eacute;pertoire, une entr&eacute;e peut &ecirc;tre incluse dans plus d'un groupe.
-<li> Les groupes peuvent utiliser certains crit&egrave;res pour d&eacute;finir dynamiquement leur contenu. Les nouvelles entr&eacute;es qui correspondent &agrave; ses crit&egrave;res sont automatiquement incluses &agrave; ces groupes. Cette caract&eacute;ristique n'est pas disponible dans les syst&egrave;mes de fichiers habituels, mais est pr&eacute;sente dans certains logiciels de messagerie &eacute;lectronique (tel que Thunderbird et Opera).
+<li> Les groupes peuvent utiliser certains crit&egrave;res pour d&eacute;finir dynamiquement leur contenu. Les nouvelles entr&eacute;es qui correspondent &agrave; ces crit&egrave;res sont automatiquement incluses &agrave; ces groupes. Cette caract&eacute;ristique n'est pas disponible dans les syst&egrave;mes de fichiers habituels, mais est pr&eacute;sente dans certains logiciels de messagerie &eacute;lectronique (tel que Thunderbird et Opera).
 </ul>
 
-S&eacute;lectionner un groupe montre les entr&eacute;es contenues dans ce groupe. S&eacute;lectionner plusieurs groupes montre les entr&eacute;es contenues dans au moins un des groupes (union) ou dans tous les groupes (intersection), selon le param&eacute;trage actuel. Tout ceci est expliqu&eacute; en d&eacute;tail ci-dessous.
+S&eacute;lectionner un groupe montre les entr&eacute;es contenues dans ce groupe. S&eacute;lectionner plusieurs groupes montre les entr&eacute;es contenues dans au moins un des groupes (union) ou dans tous les groupes (intersection), selon le param&eacute;trage en cours. Tout ceci est expliqu&eacute; en d&eacute;tail ci-dessous.
 <p>
 Les d&eacute;finitions de groupes sont sp&eacute;cifiques &agrave; chaque base de donn&eacute;es&nbsp;; Elles sont sauv&eacute;es comme un bloc <tt>@COMMENT</tt> dans le fichier <tt>.bib</tt> et sont communes &agrave; tous les utilisateurs (des futures versions de JabRef pourrait supporter des groupes d&eacute;pendants des utilisateurs).
 
 <H2>Interface</H2>
 
-L'interface des groupes se trouve dans le panneau lat&eacute;ral sur la gauche de l'&eacute;cran. Il peut &ecirc;tre affich&eacute; ou masqu&eacute; en appuyant sur <tt>CTRL-SHIFT-G</tt> ou sur le bouton des groupes dans la barre d'outils. L'interface a plusieurs boutons, mais la plupart des fonctions sont accessibles par un menu contextuel ("clic droit"). La fonction Glisser-D&eacute;placer est aussi disponible.
+L'interface des groupes se trouve dans le panneau lat&eacute;ral sur la gauche de l'&eacute;cran. Il peut &ecirc;tre affich&eacute; ou masqu&eacute; en appuyant sur <tt>CTRL-MAJ-G</tt> ou sur le bouton des groupes dans la barre d'outils. L'interface a plusieurs boutons, mais la plupart des fonctions sont accessibles par un menu contextuel ("clic droit"). La fonction Glisser-D&eacute;placer est aussi disponible.
 <p>
 
 <table cellspacing=0 cellpadding=5 border=0 bgcolor=#c0ffc0>
@@ -46,7 +46,7 @@ Cr&eacute;ez deux groupes diff&eacute;rents (par exemple, tel que d&eacute;crit
 
 <h3>...identifier les groupes se chevauchant</h3>
 
-JabRef vous permet d'identifier facilement les groupes qui se chevauchent parmi les groupes actuellement s&eacute;lectionn&eacute;s (c-&agrave;-d ceux qui contiennent au moins une entr&eacute;e qui est aussi contenu dans les groupes actuellement s&eacute;lectionn&eacute;s). Cliquez sur le bouton <b>Param&egrave;tres</b> et activ&eacute; l'option pour montrer les groupes qui se chevauchent. Ensuite s&eacute;lectionnez un groupe qui chevauche d'autres groupes. Les autres groupes devraient &ecirc;tre surlign&eacute;s.
+JabRef vous permet d'identifier facilement les groupes qui se chevauchent parmi les groupes actuellement s&eacute;lectionn&eacute;s (c-&agrave;-d ceux qui contiennent au moins une entr&eacute;e qui est aussi contenu dans les groupes actuellement s&eacute;lectionn&eacute;s). Cliquez sur le bouton <b>Param&egrave;tres</b> et activ&eacute; l'option pour montrer les groupes qui se chevauchent. Ensuite s&eacute;lectionnez un groupe qui chevauche d'autres groupes. Les noms de ces groupes s'afficheront en rouge.
 
 </tr></td>
 </table>
@@ -54,16 +54,16 @@ JabRef vous permet d'identifier facilement les groupes qui se chevauchent parmi
 
 <H2>Les types de groupes</H2>
 
-Dans JabRef 1.8, il y a quatre types de groupes diff&eacute;rents&nbsp;:
+Dans JabRef, il y a quatre types de groupes diff&eacute;rents&nbsp;:
 
 <ol>
 <li> Le groupe <b>Toutes les entr&eacute;es</b>, qui -- comme son nom le sugg&egrave;re -- contient toutes les entr&eacute;es, est toujours pr&eacute;sent et ne peut pas &ecirc;tre &eacute;dit&eacute; ou supprim&eacute;.
-<li> <b>Les groupes manuels</b> se comportent comme les r&eacute;pertoires d'un disque et contiennent uniquement les entr&eacute;es que vous leur avez explicitement assign&eacute;es. 
+<li> <b>Les groupes manuels</b> se comportent comme les r&eacute;pertoires d'un disque et contiennent uniquement les entr&eacute;es que vous leur avez explicitement assign&eacute;es.
 <li> <b>Les groupes dynamiques bas&eacute;s sur la recherche d'un mot-clef</b> contiennent des entr&eacute;es pour lesquelles un champ BibTeX donn&eacute; (par ex. <tt>keywords</tt>) contient un certain mot-clef (par ex. <tt>&eacute;lectrique</tt>). Cette m&eacute;thode ne n&eacute;cessite pas d'assignation manuelle des entr&eacute;es, mais utilise les informations qui sont d&eacute;j&agrave; pr&eacute;sentes dans la base de donn&eacute;es. Si toutes les entr&eacute;es de votre base de donn&eacute;es ont des mots-clefs pertinents dans leur champ <tt>keywords</tt>, utiliser ce type de groupe pourrait &ecirc;tre votre meilleur choix.
 <li> <b>Les groupes dynamiques bas&eacute;s sur des expressions de recherche de forme libre</b> contiennent les entr&eacute;es qui correspondent &agrave; l'expression de recherche sp&eacute;cifi&eacute;e et suivant la m&ecirc;me syntaxe que <a href="SearchHelp.html">l'interface de recherche</a> dans le panneau lat&eacute;ral. Cette <a href="SearchHelp.html#advanced">syntaxe</a> supportent les op&eacute;rateurs logiques (<tt>AND</tt>, <tt>OR</tt>, <tt>NOT</tt>) et permet de sp&eacute;cifier un ou plusieurs champs BibTeX pour la recherche, autorisant des d&eacute;finitions de groupes plus flexibles que la recherche d'un mot-clef (par ex. <tt>author=smith and title=&eacute;lectrique</tt>).
 </ol>
 
-Chaque groupe que vous cr&eacute;ez fait partie de ces trois derniers types. La fen&ecirc;tre d'&eacute;dition des groupes, qui s'ouvre en double-cliquant sur un groupe, montre une description succincte (en fran&ccedil;ais de tous les jours) de la d&eacute;finition du groupe s&eacute;lectionn&eacute;/&eacute;dit&eacute;. 
+Chaque groupe que vous cr&eacute;ez fait partie de ces trois derniers types. La fen&ecirc;tre d'&eacute;dition des groupes, qui s'ouvre en double-cliquant sur un groupe, montre une description succincte (en fran&ccedil;ais de tous les jours) de la d&eacute;finition du groupe s&eacute;lectionn&eacute;/&eacute;dit&eacute;.
 
 <H2>La structure des groupes, cr&eacute;er et supprimer des groupes</H2>
 
@@ -73,7 +73,7 @@ Annuler et R&eacute;p&eacute;ter fonctionnent pour toutes les &eacute;ditions.
 
 <H3>Les groupes manuels</h3>
 
-Les groupes manuels sont aliment&eacute;s uniquement par l'assignation explicite des entr&eacute;es. Apr&egrave;s avoir cr&eacute;er un groupe manuel, vous s&eacute;lectionnez les entr&eacute;es &agrave; lui assigner et utilisez soit un Glisser-D&eacute;placer soit le menu contextuel de la table des entr&eacute;es. Il n'y a pas d'options &agrave; configurer.
+Les groupes manuels sont aliment&eacute;s uniquement par l'assignation explicite des entr&eacute;es. Apr&egrave;s avoir cr&eacute;&eacute; un groupe manuel, vous s&eacute;lectionnez les entr&eacute;es &agrave; lui assigner et utilisez soit un Glisser-D&eacute;placer soit le menu contextuel de la table des entr&eacute;es. Il n'y a pas d'options &agrave; configurer.
 <p>
 Cette m&eacute;thode de groupement n&eacute;cessite que toutes les entr&eacute;es aient une clef BibTeX unique. Dans le cas de clefs BibTeX manquantes ou dupliqu&eacute;es, l'assignation de ces entr&eacute;es ne pourra pas &ecirc;tre correctement r&eacute;tablie lors de futures sessions.
 
@@ -85,7 +85,7 @@ Deux types de conditions logiques peuvent &ecirc;tre utilis&eacute;es&nbsp;:
 <dl>
 <dt><b>Recherche d'un mot-clef dans un champ</b></dt>
 <dd>
-Cette m&eacute;thode groupe les entr&eacute;es dans lesquelles un champ BibTeX sp&eacute;cifi&eacute; (par ex. <tt>keywords</tt>) contient le terme de recherche sp&eacute;cifi&eacute; (par ex. <tt>&eacute;lectrique</tt>). Evidemment, pour que cela fonctionne, le champ doit &ecirc;tre pr&eacute;sent dans toutes les entr&eacute;es et son contenu doit &ecirc;tre pertinent. L'exemple ci-dessus regroupera toutes les entr&eacute;es qui font r&eacute;f&eacute;rences &agrave; &eacute;lectrique. Utiliser le champ <tt>author</tt> permet de grouper les entr&eacute;es d'un auteur donn&eacute;, etc. Le mot-clef &agrave; rechercher peut &ecirc;tre du texte brut ou une expression r&eacute;guli&egrave;re. Dans le premier cas, JabRef permet l'assignation/la suppression manuelle des entr&eacute;es d'un groupe en modifiant/supprimant simplement le terme de recherche du contenu du champ de groupement [NdT: pas bien compris...]. C'est pertinent uniquement pour le champ <tt>keywords</tt> ou pour les champs autod&eacute;finis mais, &eacute;videmment, pas pour les champs tels que <tt>author</tt> ou <tt>year</tt>.
+Cette m&eacute;thode groupe les entr&eacute;es dans lesquelles un champ BibTeX sp&eacute;cifi&eacute; (par ex. <tt>keywords</tt>) contient le terme de recherche sp&eacute;cifi&eacute; (par ex. <tt>&eacute;lectrique</tt>). Evidemment, pour que cela fonctionne, le champ doit &ecirc;tre pr&eacute;sent dans toutes les entr&eacute;es et son contenu doit &ecirc;tre pertinent. L'exemple ci-dessus regroupera toutes les entr&eacute;es qui font r&eacute;f&eacute;rences &agrave; &eacute;lectrique. Utiliser le champ <tt>author</tt> permet de grouper les entr&eacute;es d'un auteur donn&eacute;, etc. Le mot-clef &agrave; rechercher peut &ecirc;tre du texte brut ou une expression r&eacute;guli&egrave;re. Dans le premier cas, JabRef permet l'assignation(/la suppression) manuelle des entr&eacute;es d'un groupe en modifiant(/supprimant) simplement le terme de recherche du contenu du champ de groupement. C'est pertinent uniquement pour le champ <tt>keywords</tt> ou pour les champs autod&eacute;finis mais, &eacute;videmment, pas pour les champs tels que <tt>author</tt> ou <tt>year</tt>.
 </dd>
 <dt><b>Utiliser une expression de recherche de forme libre</b></dt>
 <dd>
@@ -93,13 +93,13 @@ Ceci est similaire &agrave; ce qui est d&eacute;crit ci-dessus mais, au lieu de
 </dd>
 </dl>
 
-Dans le panneau des groupes, les groupes dynamiques sont par d&eacute;faut affich&eacute;s en <i>italique</i>. Cela peut &ecirc;tre modifi&eacute; dans les pr&eacute;f&eacute;rences [NdT: o&ugrave; &ccedil;a ?].
+Dans le panneau des groupes, les groupes dynamiques sont par d&eacute;faut affich&eacute;s en <i>italique</i>. Cela peut &ecirc;tre modifi&eacute; dans les pr&eacute;f&eacute;rences (Options -> Pr&eacute;f&eacute;rences -> Groupes, case "Afficher les groupes dynamiques en italique").
 
 <h3>Contexte hi&eacute;rarchique</h3>
 
-Par d&eacute;faut, un groupe est <b>ind&eacute;pendant</b> de sa position dans l'arbre des groupes&nbsp;: lorsqu'il est s&eacute;lectionn&eacute;, uniquement son contenu est affich&eacute;. Cependant, particuli&egrave;rement lors de l'utilisation de groupes dynamiques, il est souvent utile de d&eacute;finir un sous-groupe qui <b>raffine son sur-groupe</b>, c-&agrave;-d que, lorsqu'il est s&eacute;lectionn&eacute;, les entr&eacute;es contenues dans les deux groupes sont affich&eacute;es. Par exemple, cr&eacute;ez un sur-groupe contenant les entr&eacute;es poss&eacute;dant le mot-clef <tt>distribution</tt> et un sous-groupe contenant les entr&eacute;es poss&eacute;dant le mot-clef <tt>gauss</tt> raffinant ce sur-groupe. S&eacute;lectionner le sous-groupe affichera les entr&eacute;es correspondant aux deux conditions, c-&agrave;-d celles qui concerneront les distributions gaussiennes. En ajoutant au sur-groupe original un autre sous-groupe recherchant le terme <tt>laplace</tt>, le groupement peut facilement &ecirc;tre &eacute;tendu. Dans un arbre de groupes, les groupes raffinants ont un ic&ocirc;ne sp&eacute;cial (cela peut-&ecirc;tre annul&eacute; dans les pr&eacute;f&eacute;rences).
+Par d&eacute;faut, un groupe est <b>ind&eacute;pendant</b> de sa position dans l'arbre des groupes&nbsp;: lorsqu'il est s&eacute;lectionn&eacute;, uniquement son contenu est affich&eacute;. Cependant, particuli&egrave;rement lors de l'utilisation de groupes dynamiques, il est souvent utile de d&eacute;finir un sous-groupe qui <b>raffine son sur-groupe</b>, c-&agrave;-d qu'en le s&eacute;lectionnant les entr&eacute;es contenues dans les deux groupes sont affich&eacute;es. Par exemple, cr&eacute;ez un sur-groupe contenant les entr&eacute;es poss&eacute;dant le mot-clef <tt>distribution</tt> et un sous-groupe contenant les entr&eacute;es poss&eacute;dant le mot-clef <tt>gauss</tt> raffinant ce sur-groupe. S&eacute;lectionner le sous-groupe affichera les entr&eacute;es correspondant aux deux conditions, c-&agrave;-d celles qui concerneront les distributions gaussiennes. En ajoutant au sur-groupe original un autre sous-groupe recherchant le terme <tt>laplace</tt>, le groupement peut facilement &ecirc;tre &eacute;tendu. Dans un arbre de groupes, les groupes raffinants ont un ic&ocirc;ne sp&eacute;cial (cela peut-&ecirc;tre annul&eacute; dans les pr&eacute;f&eacute;rences).
 <p>
-Le compl&eacute;ment logique au groupe raffinant est un groupe qui <b>inclut ses sous-groupes</b>, c-&eacute;-d qu'en le s&eacute;lectionnant, ce ne sont pas uniquement les propres entr&eacute;es du groupe mais aussi les entr&eacute;es de ses sous-groupes qui sont affich&eacute;es. Dans l'arbre des groupes, ce type de groupe poss&egrave;de un ic&ocirc;ne sp&eacute;cial (cela peut-&ecirc;tre annul&eacute; dans les pr&eacute;f&eacute;rences).
+Le compl&eacute;ment logique au groupe raffinant est un groupe qui <b>inclut ses sous-groupes</b>, c-&agrave;-d qu'en le s&eacute;lectionnant, ce ne sont pas uniquement les propres entr&eacute;es du groupe mais aussi les entr&eacute;es de ses sous-groupes qui sont affich&eacute;es. Dans l'arbre des groupes, ce type de groupe poss&egrave;de un ic&ocirc;ne sp&eacute;cial (cela peut-&ecirc;tre annul&eacute; dans les pr&eacute;f&eacute;rences).
 
 <h2>Afficher les entr&eacute;es d'un groupe, combiner plusieurs groupes</H2>
 
@@ -113,7 +113,7 @@ Lors de l'affichage de contenu d'un ou plusieurs groupes, une recherche peut &ec
 
 <h2>Surligner les groupes se chevauchant</h2>
 
-Le bouton <b>Param&egrave;tres</b> offre une option de surlignement des groupes se chevauchant. Si elle est activ&eacute;e, lors de la s&eacute;lection d'un ou plusieurs groupes, tous les groupes contenant au moins une des entr&eacute;es appartenant au(x) groupe(s) s&eacute;lectionn&eacute;(s) sont surlign&eacute;s. Cela identifie rapidement les chevauchements entre les contenus des groupes. Vous pourriez, par exemple, cr&eacute;er un groupe <tt>A lire</tt> qui contient toutes les entr&eacute;es que vous comptez lire. A pr&eacute;sent, d&eacute;s que vous s&eacute;lectionne n'importe quel groupe, le groupe <tt>A lire</tt> sera surlign&eacute; si le groupe s&eacute;lectionn&eacute; contient des entr&eacute;es que vous comptez lire.
+Le bouton <b>Param&egrave;tres</b> offre une option de surlignement des groupes se chevauchant. Si elle est activ&eacute;e, lors de la s&eacute;lection d'un ou plusieurs groupes, tous les groupes contenant au moins une des entr&eacute;es appartenant au(x) groupe(s) s&eacute;lectionn&eacute;(s) sont surlign&eacute;s. Cela identifie rapidement les chevauchements entre les contenus des groupes. Vous pourriez, par exemple, cr&eacute;er un groupe <tt>A lire</tt> qui contient toutes les entr&eacute;es que vous comptez lire. A pr&eacute;sent, d&eacute;s que vous s&eacute;lectionnez n'importe quel groupe, le groupe <tt>A lire</tt> sera surlign&eacute; si le groupe s&eacute;lectionn&eacute; contient des entr&eacute;es que vous comptez lire.
 
 <h2>Caract&eacute;ristiques avanc&eacute;es</h2>
 
@@ -121,9 +121,9 @@ Une fois que vous ma&icirc;triserez les concepts de groupe d&eacute;crits ci-des
 
 <h3>Cr&eacute;ation automatique de groupes dynamiques</h3>
 
-En cliquant sur le bouton <b>Cr&eacute;er automatiquement des groupes pour la base de donn&eacute;es</b> (les trois "+" jaunes-orang&eacute;s), vous pouvez facilement cr&eacute;er une s&eacute;rie de groupes pertinents pour votre base de donn&eacute;es. Ce dispositif collectera tous les mots trouv&eacute;s dans le champ que vous aurez sp&eacute;cifi&eacute; et cr&eacute;era un groupe pour chaque mot. C'est utile si, par exemple, votre base contient des mots-clefs pertinents for toutes les entr&eacute;es. En g&ecirc;nerait automatiquement les groupes en se basant sur le champ <tt>keywords</tt>, vous devriez avoir une s&eacute;rie de groupes sans effort.
+En cliquant sur le bouton <b>Cr&eacute;er automatiquement des groupes pour la base de donn&eacute;es</b> (les trois "+" jaunes-orang&eacute;s), vous pouvez facilement cr&eacute;er une s&eacute;rie de groupes pertinents pour votre base de donn&eacute;es. Ce dispositif collectera tous les mots trouv&eacute;s dans le champ que vous aurez sp&eacute;cifi&eacute; et cr&eacute;era un groupe pour chaque mot. C'est utile si, par exemple, votre base contient des mots-clefs pertinents pour toutes les entr&eacute;es. En g&ecirc;nerant automatiquement les groupes en se basant sur le champ <tt>keywords</tt>, vous devriez avoir une s&eacute;rie de groupes sans effort.
 <p>
-Vous pouvez aussi sp&eacute;cifi&eacute;s des caract&egrave;res &agrave; ignorer, par exemple les virgules utilis&eacute;es entre les mots-clefs. Ils seront trait&eacute;s comme des s&eacute;parateurs de mots et non comme en faisant partie. Cette &eacute;tape est importante pour que les mots-clefs compos&eacute;s tels que <tt>distribution de Laplace</tt> soient reconnus comme une unique entit&eacute; s&eacute;mantique (vous ne pouvez pas utiliser cette option pour supprimer des mots complets. Pour cela, supprimer manuellement les groupes non voulus &agrave; la suite de leur cr&eacute;ation automatique.
+Vous pouvez aussi sp&eacute;cifier des caract&egrave;res &agrave; ignorer, par exemple les virgules utilis&eacute;es entre les mots-clefs. Ils seront trait&eacute;s comme des s&eacute;parateurs de mots et non comme en faisant partie. Cette &eacute;tape est importante pour que les mots-clefs compos&eacute;s tels que <tt>distribution de Laplace</tt> soient reconnus comme une unique entit&eacute; s&eacute;mantique (vous ne pouvez pas utiliser cette option pour supprimer des mots complets. Pour cela, supprimer manuellement les groupes non voulus &agrave; la suite de leur cr&eacute;ation automatique.
 
 <h3>Rafra&icirc;chir l'affichage des groupes</h3>
 
index f29ab2a..f5973f6 100644 (file)
@@ -22,8 +22,8 @@ de la barre d'outils vous affichera la liste des fichiers d'aide disponibles.
 De plus, la barre d'outils contient des boutons de navigation pour afficher
 les fichiers pr&eacute;c&eacute;dents et suivants. Ils sont similaires aux boutons
 <em>Pr&eacute;c&eacute;dent</em> et <em>Suivant</em> d'un navigateur internet standard.
-Les raccourcis clavier pour la navigation sont CTRL-SHIFT et la fl&egrave;che gauche
-pour <em>Pr&eacute;c&eacute;dent</em>, CTRL-SHIFT et la fl&egrave;che droite pour <em>Suivant</em>.
+Les raccourcis clavier pour la navigation sont la fl&egrave;che gauche
+pour <em>Pr&eacute;c&eacute;dent</em> et la fl&egrave;che droite pour <em>Suivant</em>.
 
 <P>
 La fen&ecirc;tre d'aide se ferme en pressant ESCAPE.
diff --git a/src/help/fr/IEEEXploreHelp.html b/src/help/fr/IEEEXploreHelp.html
new file mode 100644 (file)
index 0000000..0085700
--- /dev/null
@@ -0,0 +1,28 @@
+<HTML>
+
+<BODY text="#275856">
+<basefont size="4" color="#2F4958" face="arial">
+
+<H1>Recherche IEEEXplore</H1>
+
+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>
+Pour lancer une recherche, entrez les mots de votre requ&ecirc;te et appuyez sur
+
+<b>Entr&eacute;e</b> ou sur le bouton <b>Rechercher</b>.
+
+<p>
+La recherche est effectu&eacute;e en mode invit&eacute;, ce qui signifie qu'au maximum 100 r&eacute;sultats
+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 
+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.
+
+</HTML>
index 5ed3343..9e4cabc 100644 (file)
@@ -10,7 +10,7 @@ Quand vous importez de nouvelles entr&eacute;es &agrave; partir d'un format de r
 </p>
 
 
-<P>La fen&ecirc;tre de v&eacute;rification vous permet de supprimer les entr&eacute;es que vous ne voulez pas garder et d'effectuer des op&eacute;rations simples telles que la g&eacute;n&eacute;rations des clefs BibTeX pour ces entr&eacute;es ou leur ajout &agrave; des <a href="GroupsHelp.html">groupes</a>. Si vous les importez dans une base de donn&eacute;es existante, il est souvent plus facile d'effectuer ces op&eacute;rations avant que les nouvelles entr&eacute;es soient ins&eacute;r&eacute;es parmi les entr&eacute;es d&eacute;j&agrave; pr&eacute;sentes dans la base de donn&eacute;es.
+<P>La fen&ecirc;tre de v&eacute;rification vous permet de supprimer les entr&eacute;es que vous ne voulez pas garder et d'effectuer des op&eacute;rations simples telles que la g&eacute;n&eacute;rations des clefs BibTeX pour ces entr&eacute;es ou leur ajout &agrave; des <a href="GroupsHelp.html">groupes</a> manuels. Si vous les importez dans une base de donn&eacute;es existante, il est souvent plus facile d'effectuer ces op&eacute;rations avant que les nouvelles entr&eacute;es soient ins&eacute;r&eacute;es parmi les entr&eacute;es d&eacute;j&agrave; pr&eacute;sentes dans la base de donn&eacute;es.
 </p>
 
 
index c061693..d25a30f 100644 (file)
@@ -5,13 +5,13 @@
 
 <H1>Abr&eacute;viations des journaux</H1>
 
-Cette fonction peut &ecirc;tre configur&eacute;e dans <b>Outils -> G&eacute;rer les abr&eacute;viations de journaux</b>.
+Cette fonction peut &ecirc;tre configur&eacute;e dans <b>Options -> G&eacute;rer les abr&eacute;viations de journaux</b>.
 
 <p>JabRef peut basculer automatiquement les noms de journaux entre leurs formes abr&eacute;g&eacute;es et non abr&eacute;g&eacute;es si les noms sont contenus dans une de vos listes de journaux. Vous pouvez utiliser plusieurs listes, chacune &eacute;tant un fichier texte sauv&eacute; sur votre disque dur.
 
 <H2>Utiliser cette fonction</H2>
 <p>
-La conversion de noms de journaux peut &ecirc;tre effectu&eacute;e depuis l'&eacute;diteur d'entr&eacute;es ou depuis le menu <b>Outils</b>. Dans l'&eacute;diteur d'entr&eacute;es, vous trouverez un bouton nomm&eacute; <i>Type d'abr&eacute;viation</i> dans le champ <i>journal</i>.
+La conversion de noms de journaux peut &ecirc;tre effectu&eacute;e depuis l'&eacute;diteur d'entr&eacute;es ou depuis le menu <b>Outils</b>. Dans l'&eacute;diteur d'entr&eacute;es, vous trouverez un bouton nomm&eacute; <i>Masquer/afficher l'abr&eacute;viation</i> à droite du champ <i>journal</i>.
 Cliquer sur ce bouton changera le mode d'affichage du nom du journal. Trois modes sont possibles&nbsp;:
 <ul>
     <li>Nom complet, par exemple "Aquacultural Engineering"</li>
@@ -21,7 +21,7 @@ Cliquer sur ce bouton changera le mode d'affichage du nom du journal. Trois mode
 Si le nom du journal actuel n'est pas trouv&eacute; dans la liste des journaux, le champ ne sera pas modifi&eacute;.
 
 <p>
-Pour convertir en une seule fois les noms de journaux de beaucoup d'entr&eacute;es, vous pouvez s&eacute;lectionner ces entr&eacute;es et choisir <b>Outils -> Abr&eacute;ger les noms de journaux (ISO)</b>, <b>Outils -> Abr&eacute;ger les noms de journaux (MEDLINE)</b> ou <b>Outils -> D&eacute;velopper les noms des journaux</b>. Ces deux actions abr&eacute;geront ou d&eacute;velopperont les noms de journaux pour toutes les entr&eacute;es s&eacute;lectionn&eacute;es dont le nom de journal a pu &ecirc;tre trouv&eacute; dans vos listes de journaux.
+Pour convertir en une seule fois les noms de journaux de beaucoup d'entr&eacute;es, vous pouvez s&eacute;lectionner ces entr&eacute;es et choisir <b>Outils -> Abr&eacute;ger les noms de journaux (ISO)</b>, <b>Outils -> Abr&eacute;ger les noms de journaux (MEDLINE)</b> ou <b>Outils -> D&eacute;velopper les noms des journaux</b>. Ces trois actions abr&eacute;geront ou d&eacute;velopperont les noms de journaux pour toutes les entr&eacute;es s&eacute;lectionn&eacute;es dont le nom de journal a pu &ecirc;tre trouv&eacute; dans vos listes de journaux.
 
 <h2>Param&eacute;trer vos listes de journaux</h2>
 
@@ -30,7 +30,7 @@ Vous pouvez avoir plusieurs listes de journaux, toutes sous la forme de fichiers
 <H3>Votre liste personnelle des abr&eacute;viations de journaux</H3>
 
 Votre liste personnelle de journaux est g&eacute;r&eacute;e dans la partie sup&eacute;rieure de la fen&ecirc;tre <b>G&eacute;rer les abr&eacute;viations de journaux</b>.
-Pour commencer &agrave; construire votre liste d'abr&eacute;viations de journaux, choisissez <i>Nouveau fichier</i>, et entrez manuellement le nom du fichier ou utilisez le bouton <i>Naviguer</i>. Si vous disposez d&eacute;j&agrave; d'un fichier que vous souhaitez utiliser comme point de d&eacute;part, choisissez <i>Fichier existant</i> et utilisez le bouton <i>Naviguer</i> pour choisir le fichier. La table sera mise &agrave; jour pour tenir compte du contenu de la liste s&eacute;lectionn&eacute;e.
+Pour commencer &agrave; construire votre liste d'abr&eacute;viations de journaux, choisissez <i>Nouveau fichier</i>, et entrez manuellement le nom du fichier ou utilisez le bouton <i>Explorer</i>. Si vous disposez d&eacute;j&agrave; d'un fichier que vous souhaitez utiliser comme point de d&eacute;part, choisissez <i>Fichier existant</i> et utilisez le bouton <i>Explorer</i> pour choisir le fichier. La table sera mise &agrave; jour pour tenir compte du contenu de la liste s&eacute;lectionn&eacute;e.
 
 <p>La table et les boutons d'outils &agrave; sa droite vous permettent d'ajouter, de supprimer et d'&eacute;diter les entr&eacute;es de journaux. Pour chaque entr&eacute;e, vous devez fournir le nom complet du journal et son abr&eacute;viation ISO (par exemple "Aquacultural Engineering" et "Aquacult. Eng."). Pour &eacute;diter une entr&eacute;e, double-cliquez sur sa ligne dans la table.
 
@@ -40,9 +40,9 @@ Pour commencer &agrave; construire votre liste d'abr&eacute;viations de journaux
 
 En plus de votre liste personnelle, vous pouvez relier plusieurs listes externes. Ces liens peuvent &ecirc;tre param&eacute;tr&eacute; dans la partie inf&eacute;rieure de la fen&ecirc;tre <b>G&eacute;rer les abr&eacute;viations de journaux</b>. Les listes externes sont similaires &agrave; la liste personnelle - la seule diff&eacute;rence est que JabRef ne fournit pas d'interface pour &eacute;diter les listes externes.
 <p>
-Pour ajouter une nouvelle liste externe, cliquez sur le bouton <b>+</b>. Cela ajoutera une nouvelle entr&eacute;e &agrave; l'interface. Ensuite, utilisez soit le bouton <i>Naviguer</i> soit le bouton  <i>T&eacute;l&eacute;charger</i> situ&eacute; &agrave; cot&eacute; d'une des entr&eacute;es de la partie inf&eacute;rieure de la fen&ecirc;tre.
+Pour ajouter une nouvelle liste externe, cliquez sur le bouton <b>+</b>. Cela ajoutera une nouvelle entr&eacute;e &agrave; l'interface. Ensuite, utilisez soit le bouton <i>Explorer</i> soit le bouton  <i>T&eacute;l&eacute;charger</i> situ&eacute; &agrave; cot&eacute; d'une des entr&eacute;es de la partie inf&eacute;rieure de la fen&ecirc;tre.
     <ul>
-    <li>Le bouton <i>Naviguer</i> vous permet de s&eacute;lectionner un fichier existant sur votre ordinateur.</li>
+    <li>Le bouton <i>Explorer</i> vous permet de s&eacute;lectionner un fichier existant sur votre ordinateur.</li>
     <li>Le bouton <i>T&eacute;l&eacute;charger</i> vous permet de t&eacute;l&eacute;charger une liste depuis l'internet en entrant une URL, de la stocker dans un fichier local sur votre ordinateur et de la lier comme une liste de journaux depuis JabRef. L'URL sera par d&eacute;faut l'adresse de la liste de journaux disponible depuis la page web de JabRef. Cette liste est incompl&egrave;te mais pourra &ecirc;tre am&eacute;lior&eacute;e dans le futur.</li>
     </ul>
 
index a857237..9b91765 100644 (file)
@@ -6,11 +6,11 @@
 <H1>Etiqueter les entr&eacute;es</H1>
 
 Vous avez la possibilit&eacute; d'<em>&eacute;tiqueter</em> des entr&eacute;es. Les raccourcis
-claviers sont CTRL-M et CTRL-SHIFT-M pour, respectivement, &eacute;tiqueter et
+claviers sont CTRL-M et CTRL-MAJ-M pour, respectivement, &eacute;tiqueter et
 d&eacute;s&eacute;tiqueter les entr&eacute;es s&eacute;lectionn&eacute;es. Vous pouvez aussi acc&eacute;der &agrave; ces actions
 en utilisant le menu <b>Edition</b>.
 
-<p>Noter qu'&eacute;tiqueter des entr&eacute;es n'est pas la m&ecirc;me chose que les s&eacute;lectionner.
+<p>Notez qu'&eacute;tiqueter des entr&eacute;es n'est pas la m&ecirc;me chose que les s&eacute;lectionner.
 Les entr&eacute;es &eacute;tiquet&eacute;es se comportent diff&eacute;remment des autres, et ce de deux fa&ccedil;ons.
 Premi&egrave;rement, elles sont toujours affich&eacute;es avec un fond jaune dans le tableau
 des entr&eacute;es. Deuxi&egrave;mement, elles seront affich&eacute;es en haut de la liste des entr&eacute;es,
index ac44a86..2704a50 100644 (file)
@@ -7,7 +7,7 @@
 <h1>R&eacute;cup&eacute;ration d'entr&eacute;es depuis Medline</h1>
 
 <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>Outils -> Recherche Medline</b> et vous verrez appara&icirc;tre l'interface de Medline dans le panneau lat&eacute;ral.
+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>
 
 <p>
@@ -20,7 +20,7 @@ Il y a deux mani&egrave;res d'indiquer les entr&eacute;es &agrave; t&eacute;l&ea
 </ol>
 
 <p>
-Dans les deux cas, appuyez sur la touche <b>Enter</b> ou sur le bouton <b>Rechercher</b>. Si vous utilisez une recherche de texte, vous serez inform&eacute; du nombre d'entr&eacute;es trouv&eacute;es et vous pourrez choisir le nombre d'entr&eacute;es &agrave; t&eacute;l&eacute;charger.
+Dans les deux cas, appuyez sur la touche <b>Entr&eacute;e</b> du clavier ou sur le bouton <b>Rechercher</b>. Si vous utilisez une recherche de texte, vous serez inform&eacute; du nombre d'entr&eacute;es trouv&eacute;es et vous pourrez choisir le nombre d'entr&eacute;es &agrave; t&eacute;l&eacute;charger.
 </p>
 
 <p>
index ac78a75..2c1ab82 100644 (file)
@@ -17,8 +17,8 @@ Suivez les &eacute;tapes suivantes pour configurer une feuille de calcul export&
     <li>Exporter votre base en utilisant le format <b>.ods</b></li>
     <li>D&eacute;marrer OpenOffice.org Writer</li>
     <li>Choisir <b>Outils -> Options -> OpenOffice.org Base -> Base de donn&eacute;es</b></li>
-    <li>Éditer la base de donn&eacute;es <i>Bibliography</i>, et lui donner un autre nom, tel que
-          <i>Bibliography-old</i></li>
+    <li>Éditer la base de donn&eacute;es <i>Bibliography</i>, et lui donner un autre nom, tel
+    que <i>Bibliography-old</i> (en effet OpenOffice.org Writer ne permet pas de choisir entre plusieurs bibliographies)</li>
     <li>Fermer la fen&ecirc;tre <b>Options</b> et choisir <b>Fichier -> Nouveau -> Base de donn&eacute;es</b></li>
     <li>Choisir <b>Se connecter &agrave; une base de donn&eacute;es existante</b>, s&eacute;lectionner <b>Classeur</b> comme type de base de donn&eacute;es, cliquer sur <b>Suivant</b> et choisir le fichier <b>.ods</b> que vous avez export&eacute;.</li>
     <li>Cliquer sur <b>Terminer</b>, puis choisir le nom <i>Bibliographie</i> quand demand&eacute;.</li>
index f16e31d..9d6c065 100644 (file)
@@ -8,14 +8,14 @@
 Il y a trois modes diff&eacute;rents de recherche dans JabRef.
 
 <p>
-<em>CTRL-F</em> ouvre ou active l'interface de recherche. Appuyer 
+<em>CTRL-F</em> ouvre ou active l'interface de recherche. Appuyer
 sur <em>CTRL-F</em> plusieurs fois modifie le mode de recherche.
 En recherche incr&eacute;mentale, <em>CTRL-F</em> affiche
 l'occurrence suivante de la cha&icirc;ne &agrave; rechercher.
 <p>
-<em>CTRL-SHIFT-F</em> ouvre ou active l'interface de recherche, et
+<em>CTRL-MAJ-F</em> ouvre ou active l'interface de recherche, et
 s&eacute;lectionne la recherche incr&eacute;mentale. En recherche incr&eacute;mentale, appuyer
-sur  <em>CTRL-SHIFT-F</em> affiche aussi l'occurrence suivante de la cha&icirc;ne
+sur  <em>CTRL-MAJ-F</em> affiche aussi l'occurrence suivante de la cha&icirc;ne
 &agrave; rechercher.
 
 
@@ -23,23 +23,23 @@ sur  <em>CTRL-SHIFT-F</em> affiche aussi l'occurrence suivante de la cha&icirc;n
 
 En recherche incr&eacute;mentale, le programme effectue une recherche chaque
 fois qu'une lettre est tap&eacute;e. La ligne de statut vous informe
-du r&eacute;sultat de cette recherche. Entrez le raccourci clavier
+du r&eacute;sultat de cette recherche. Entrer le raccourci clavier
 de la recherche affiche l'occurrence suivante de la cha&icirc;ne &agrave; rechercher.
 Si aucune autre occurrence ne peut &ecirc;tre trouv&eacute;e, la ligne de statut vous
-en informe. R&eacute;p&eacute;tez alors la recherche fera red&eacute;marrer la recherche
+en informe. R&eacute;p&eacute;ter alors la recherche fera red&eacute;marrer la recherche
 au d&eacute;but. L'ordre de recherche se fait toujours selon l'ordre de tri
 actuel de votre base de donn&eacute;es. Pour quitter la recherche incr&eacute;mentale,
 appuyez sur ESC ou cliquez sur "Vider".
 
 <H2>Recherche normale</H2>
 
-Dans une recherche normale, le programme recherche dans votre base les occurrences de votre cha&icirc;ne de recherche, apr&egrave;s que vous ayez appuy&eacute; sur Entr&eacute;e. Toutes les entr&eacute;es qui ne correspondent pas sont masqu&eacute;es, ne laissant appara&icirc;tre que les entr&eacute;es correspondant aux crit&egrave;res. Pour ne plus afficher les r&eacute;sultats de la recherche, appuyez sur ESC ou cliquer sur "Vider".
+Dans une recherche normale, le programme recherche dans votre base les occurrences de votre cha&icirc;ne de recherche, apr&egrave;s que vous ayez appuy&eacute; sur Entr&eacute;e. Toutes les entr&eacute;es qui ne correspondent pas sont masqu&eacute;es, ne laissant alors appara&icirc;tre que les entr&eacute;es correspondant aux crit&egrave;res (mode filtre), ou sont grisées (mode flottante). Pour ne plus afficher les r&eacute;sultats de la recherche, appuyer sur ESC ou cliquer sur "Vider".
 
 <a name="advanced"><H2>Sp&eacute;cification des champs, op&eacute;rateurs logiques</H2>
 
 Afin de rechercher uniquement des champs sp&eacute;cifiques et/ou
 d'inclure des op&eacute;rateurs logiques dans l'expression &agrave; rechercher,
-une syntaxe particuli&egrave;re est disponible. Par exemple, pour 
+une syntaxe particuli&egrave;re est disponible. Par exemple, pour
 rechercher les entr&eacute;es dont l'auteur est "Miller", entrez (except&eacute;
 en mode de recherche incr&eacute;mentale)&nbsp;:
 <p>
@@ -63,7 +63,7 @@ de la fa&ccedil;on habituelle&nbsp;:
 En fait, le signe "=" signifie "contient". La recherche d'une correspondance exacte
 est possible en utilisant "matches" ou "==". Utilisez "!=" pour tester si le terme &agrave;
 rechercher n'est <i>pas</i> contenu dans le champ (un &eacute;quivalent de "not ...
-contains ..."). 
+contains ...").
 
 Si vous sp&eacute;cifiez un type de champ dans l'expression &agrave; rechercher, la s&eacute;lection des types de champs (requis, optionels, g&eacute;n&eacute;raux)
 apparaissant dans les param&egrave;tres de recherche n'est pas prise en compte.
@@ -84,4 +84,4 @@ Le bouton <em>Param&egrave;tres</em> ouvre un menu qui permet de basculer en mod
 
 
 </BODY>
-</HTML> 
+</HTML>
diff --git a/src/help/fr/ShortAuxImport.html b/src/help/fr/ShortAuxImport.html
new file mode 100644 (file)
index 0000000..4ee9e87
--- /dev/null
@@ -0,0 +1,7 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//FR">
+<html><head></head>
+
+<body>
+<basefont size="-1" color="#2F4958" face="arial">
+Cette fonction génère une nouvelle base de données qui contient uniquement les références utilisées dans un projet TeX existant.
+</body></html> 
\ No newline at end of file
index bd1d74a..a2d9726 100644 (file)
@@ -14,7 +14,7 @@ unique et un <em>contenu</em>. Dans votre base de donn&eacute;es, ce nom peut &e
 utilis&eacute; pour repr&eacute;senter ce contenu.
 
 <P>
-Par exemple, si beaucoup d'entr&eacute;es sont d'un journal dont l'abr&eacute;viation
+Par exemple, si beaucoup d'entr&eacute;es appartiennent à un journal dont l'abr&eacute;viation
 est difficile &agrave; m&eacute;moriser, tel que 'J. Theor. Biol.' (Journal of
 Theroretical Biology), une cha&icirc;ne nomm&eacute;e JTB peut &ecirc;tre d&eacute;finie pour
 repr&eacute;senter le nom de ce journal. Au lieu de taper le nom exact du journal
index d92ebbe..82ca093 100644 (file)
@@ -5,7 +5,7 @@
 
 <H1>Horodatage des entr&eacute;es</H1>
 
-Cette fonction peut &ecirc;tre activ&eacute;e et configur&eacute;e sous <b>Pr&eacute;f&eacute;rences -> G&eacute;n&eacute;ral</b>.
+Cette fonction peut &ecirc;tre activ&eacute;e et configur&eacute;e sous <b>Options -> Pr&eacute;f&eacute;rences -> G&eacute;n&eacute;ral</b>.
 
 <p>JabRef peut automatiquement ins&eacute;rer un champ qui contient la date &agrave; laquelle
 une entr&eacute;e a &eacute;t&eacute; ajout&eacute;e &agrave; la base de donn&eacute;es.
@@ -14,26 +14,26 @@ une entr&eacute;e a &eacute;t&eacute; ajout&eacute;e &agrave; la base de donn&ea
 <H2>Mise en forme</H2>
 
 Le format d'horodatage est d&eacute;termin&eacute; par une cha&icirc;ne contenant des codes qui indiquent
-la position des diff&eacute;rentes parties de la date. 
-        <p>
-        Voici certains des codes disponibles (exemples donn&eacute;s entre parenth&egrave;ses pour le 
-        mercredi 14 septembre 2005 &agrave; 17h45)&nbsp;:
-        <ul>
-            <li><b>yy</b>: ann&eacute;e (05)</li>
-            <li><b>yyyy</b>: ann&eacute;e (2005)</li>
-            <li><b>MM</b>: mois (09)</li>
-            <li><b>dd</b>: jour du mois (14)</li>
-            <li><b>HH</b>: heure du jour (17)</li>
-            <li><b>mm</b>: minute de l'heure (45)</li>
-        </ul>
-        
-        Ces codes peuvent &ecirc;tre combin&eacute;s avec des ponctuations et des espaces. Quelques exemples&nbsp;:
-        
-        <ul>
-        <li><b>yyyy.MM.dd</b> donne <b>2005.09.14</b></li>
-        <li><b>yy.MM.dd</b> donne <b>05.09.14</b></li>
-        <li><b>yyyy.MM.dd HH:mm</b> donne <b>2005.09.14 17:45</b></li>
-        </ul>
+la position des diff&eacute;rentes parties de la date.
+     <p>
+     Voici certains des codes disponibles (exemples donn&eacute;s entre parenth&egrave;ses pour le
+     mercredi 14 septembre 2005 &agrave; 17h45)&nbsp;:
+     <ul>
+         <li><b>yy</b>: ann&eacute;e (05)</li>
+         <li><b>yyyy</b>: ann&eacute;e (2005)</li>
+         <li><b>MM</b>: mois (09)</li>
+         <li><b>dd</b>: jour du mois (14)</li>
+         <li><b>HH</b>: heure du jour (17)</li>
+         <li><b>mm</b>: minute de l'heure (45)</li>
+     </ul>
+
+     Ces codes peuvent &ecirc;tre combin&eacute;s avec des ponctuations et des espaces. Quelques exemples&nbsp;:
+
+     <ul>
+     <li><b>yyyy.MM.dd</b> donne <b>2005.09.14</b></li>
+     <li><b>yy.MM.dd</b> donne <b>05.09.14</b></li>
+     <li><b>yyyy.MM.dd HH:mm</b> donne <b>2005.09.14 17:45</b></li>
+     </ul>
 
 
 </BODY>
diff --git a/src/images/splash-2.1.svg b/src/images/splash-2.1.svg
new file mode 100644 (file)
index 0000000..bf20ab2
--- /dev/null
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:export-ydpi="90.000000"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-filename="/home/alver/jabref-2.1b/src/images/splash-2.1beta.png"
+   sodipodi:docname="splash-2.1.svg"
+   sodipodi:docbase="/home/alver/jabref/src/images"
+   inkscape:version="0.42+0.43pre1"
+   sodipodi:version="0.32"
+   id="svg2138"
+   height="1052.3622047"
+   width="744.09448819">
+  <defs
+     id="defs2140">
+    <pattern
+       patternTransform="translate(316.0000,1046.362)"
+       id="pattern9054"
+       xlink:href="#pattern9048"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5361"
+       inkscape:collect="always">
+      <stop
+         id="stop5363"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop5365"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <marker
+       style="overflow:visible;"
+       id="Arrow2Send"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow2Send">
+      <path
+         transform="scale(0.3) rotate(180) translate(-5,0)"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         id="path3046"
+         sodipodi:nodetypes="cccc" />
+    </marker>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="300.91277"
+       x2="491.20592"
+       y1="300.91277"
+       x1="445.01770"
+       id="linearGradient5367"
+       xlink:href="#linearGradient5361"
+       inkscape:collect="always" />
+    <pattern
+       id="pattern9048"
+       patternTransform="translate(231.0000,284.3622)"
+       height="428.00000"
+       width="572.00000"
+       patternUnits="userSpaceOnUse">
+      <image
+         transform="translate(-231.0000,-284.3622)"
+         style="opacity:1.0000000;stroke:#000000;stroke-width:5.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+         inkscape:export-ydpi="90.000000"
+         inkscape:export-xdpi="90.000000"
+         inkscape:export-filename="/home/alver/Desktop/bilder/jabref/splash4.png"
+         y="284.36218"
+         x="231.00000"
+         xlink:href="behandlet.png"
+         sodipodi:absref="/home/alver/Desktop/bilder/jabref/behandlet.png"
+         width="572.00000"
+         height="428.00000"
+         id="image9050" />
+    </pattern>
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-y="53"
+     inkscape:window-x="15"
+     inkscape:window-height="856"
+     inkscape:window-width="750"
+     inkscape:current-layer="layer1"
+     inkscape:document-units="px"
+     inkscape:cy="698.1925"
+     inkscape:cx="364.52617"
+     inkscape:zoom="1"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base" />
+  <metadata
+     id="metadata2143">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1">
+    <rect
+       inkscape:export-ydpi="75.000000"
+       inkscape:export-xdpi="75.000000"
+       inkscape:export-filename="/home/alver/jabref-2.1b/src/images/splash-2.1beta.png"
+       y="170.36218"
+       x="77.500000"
+       height="432.00000"
+       width="576.00000"
+       id="rect6833"
+       style="opacity:1.0000000;fill:#6b6b75;fill-opacity:1.0000000;stroke:none;stroke-width:5.0000000;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+    <image
+       id="image1821"
+       height="428"
+       width="572"
+       sodipodi:absref="/home/alver/jabref/src/images/splashBackground.png"
+       xlink:href="splashBackground.png"
+       x="79"
+       y="172.36218"
+       inkscape:export-filename="/home/alver/jabref-2.1b/src/images/splash-2.1beta.png"
+       inkscape:export-xdpi="75"
+       inkscape:export-ydpi="75" />
+    <flowRoot
+       inkscape:export-ydpi="75.000000"
+       inkscape:export-xdpi="75.000000"
+       inkscape:export-filename="/home/alver/jabref_beta/jabref/jabref-2.0-splash.png"
+       style="opacity:1.0000000;fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-width:0.48137558;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+       transform="matrix(1.875133,0.000000,0.000000,2.542210,-129.6969,-372.8897)"
+       id="flowRoot2189"
+       xml:space="preserve">
+      <flowRegion
+   id="flowRegion2191">
+        <rect
+   style="fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-opacity:1.0000000;stroke-width:0.48137557;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-linejoin:bevel"
+   y="199.10532"
+   x="128.49385"
+   height="127.49445"
+   width="283.51782"
+   id="rect2193" />
+      </flowRegion>
+      <flowPara
+   style="font-size:90.000000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-width:0.48137558;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;font-family:AR PL KaitiM GB"
+   id="flowPara2201">JabRef</flowPara>
+    </flowRoot>    <flowRoot
+       inkscape:export-ydpi="75.000000"
+       inkscape:export-xdpi="75.000000"
+       inkscape:export-filename="/home/alver/jabref-2.1b/src/images/splash-2.1beta.png"
+       style="font-size:34.96500015px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:104.16220427%;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#5cc757;stroke-width:0.64448702;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:0.64448701 0.64448701 ;stroke-dashoffset:0.45114091;stroke-opacity:1;font-family:FreeSans"
+       transform="matrix(2.869197,-1.415830e-2,2.234317e-2,3.356271,-832.1435,-652.0185)"
+       id="flowRoot2203"
+       xml:space="preserve">
+      <flowRegion
+   style="stroke:url(#linearGradient5367);stroke-width:0.64448702;stroke-miterlimit:4;stroke-dasharray:0.64448701 0.64448701 ;stroke-dashoffset:0.45114091"
+   id="flowRegion2205">
+        <rect
+   style="font-size:34.96500015px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:104.16220427%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#322b5b;stroke-width:0.64448702;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:0.64448701 0.64448701 ;stroke-dashoffset:0.45114091;stroke-opacity:1;font-family:FreeSans"
+   y="286.45224"
+   x="443.95346"
+   height="119.83134"
+   width="173.972"
+   id="rect2207" />
+      </flowRegion>
+      <flowPara
+   style="font-size:34.96500015px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:104.16220427%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#322b5b;stroke-width:0.64448702;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:0.64448701 0.64448701 ;stroke-dashoffset:0.45114091;stroke-opacity:1;font-family:FreeSans"
+   id="flowPara2211">2.1</flowPara>
+    </flowRoot>    <flowRoot
+       inkscape:export-ydpi="75.000000"
+       inkscape:export-xdpi="75.000000"
+       inkscape:export-filename="/home/alver/jabref-2.1b/src/images/splash-2.1beta.png"
+       transform="matrix(0.972246,0.000000,0.000000,1.325301,6.054966,-126.1181)"
+       style="font-size:11.9999996;font-style:oblique;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#797580;fill-opacity:1.0000000;font-family:Bitstream Vera Sans;text-anchor:middle;writing-mode:lr;text-align:center;line-height:100%"
+       id="flowRoot3076"
+       xml:space="preserve"><flowRegion
+         id="flowRegion3078">
+        <rect
+   style="fill:#797580;fill-opacity:1.0000000;font-family:Bitstream Vera Sans;font-weight:bold;font-style:oblique;font-stretch:normal;font-variant:normal;font-size:11.9999996;text-anchor:middle;text-align:center;writing-mode:lr;line-height:100%"
+   y="514.56494"
+   x="115.50008"
+   height="78.684433"
+   width="506.03476"
+   id="rect3080" />
+      </flowRegion><flowPara
+         id="flowPara1339">This program is distributed under the terms of the General Public License.</flowPara><flowPara
+         id="flowPara1341">Copyright (2003-2006) Morten O. Alver, Nizar Batada and all contributors.</flowPara></flowRoot>    <text
+       inkscape:export-ydpi="75.000000"
+       inkscape:export-xdpi="75.000000"
+       inkscape:export-filename="/home/alver/jabref-2.1b/src/images/splash-2.1beta.png"
+       transform="scale(0.853277,1.171952)"
+       sodipodi:linespacing="100%"
+       id="text1393"
+       y="315.20035"
+       x="163.38908"
+       style="font-size:183.29680;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#413b62;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Nimbus Roman No9 L;text-anchor:start;writing-mode:lr-tb"
+       xml:space="preserve"><tspan
+         y="315.20035"
+         x="163.38908"
+         id="tspan1395"
+         sodipodi:role="line">JabRef</tspan></text>
+    <text
+       inkscape:export-ydpi="75.000000"
+       inkscape:export-xdpi="75.000000"
+       inkscape:export-filename="/home/alver/jabref-2.1b/src/images/splash-2.1beta.png"
+       transform="scale(0.853347,1.171856)"
+       sodipodi:linespacing="100%"
+       id="text2179"
+       y="397.84811"
+       x="149.99753"
+       style="font-size:44.00000436;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#805b41;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Nimbus Roman No9 L;text-anchor:start;writing-mode:lr;text-align:start;line-height:100%"
+       xml:space="preserve"><tspan
+         y="397.84811"
+         x="149.99753"
+         id="tspan2181"
+         sodipodi:role="line">reference manager</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:68.76833344px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.66853937;fill:#cf5953;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Nimbus Sans L"
+       x="288.67255"
+       y="712.21191"
+       id="text1343"
+       sodipodi:linespacing="125%"
+       transform="matrix(0.950669,-0.326025,0.330198,0.938651,0.000000,0.000000)"
+       inkscape:export-filename="/home/alver/jabref-2.1b/src/images/splash-2.1beta.png"
+       inkscape:export-xdpi="75"
+       inkscape:export-ydpi="75"><tspan
+         sodipodi:role="line"
+         id="tspan1345"
+         x="288.67255"
+         y="712.21191">beta</tspan></text>
+  </g>
+</svg>
index 926e01a..2b4d4eb 100644 (file)
@@ -47,11 +47,11 @@ class AppearancePrefsTab extends JPanel implements PrefsTab {
         JLabel lab;
         builder.appendSeparator(Globals.lang("General"));
         JPanel p1 = new JPanel();
-        //lab = new JLabel(Globals.lang("Menu and label font size") + ":");
-        //p1.add(lab);
-        //p1.add(fontSize);
-        //builder.append(p1);
-        //builder.nextLine();
+        lab = new JLabel(Globals.lang("Menu and label font size") + ":");
+        p1.add(lab);
+        p1.add(fontSize);
+        builder.append(p1);
+        builder.nextLine();
         builder.append(antialias);
         builder.nextLine();
         builder.appendSeparator(Globals.lang("Table appearance"));
index 8ce08fe..bebddea 100644 (file)
@@ -387,7 +387,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
         actions.put("saveAs", new BaseAction () {
                 public void action() throws Throwable {
 
-                  String chosenFile = Globals.getNewFile(frame, Globals.prefs, new File(Globals.prefs.get("workingDirectory")), ".bib",
+                  String chosenFile = Globals.getNewFile(frame, new File(Globals.prefs.get("workingDirectory")), ".bib",
                                                          JFileChooser.SAVE_DIALOG, false);
 
                   if (chosenFile != null) {
@@ -419,7 +419,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
         actions.put("saveSelectedAs", new BaseAction () {
                 public void action() throws Throwable {
 
-                  String chosenFile = Globals.getNewFile(frame, Globals.prefs, new File(Globals.prefs.get("workingDirectory")), ".bib",
+                  String chosenFile = Globals.getNewFile(frame, new File(Globals.prefs.get("workingDirectory")), ".bib",
                                                          JFileChooser.SAVE_DIALOG, false);
                   if (chosenFile != null) {
                     File expFile = new File(chosenFile);
@@ -927,57 +927,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
                 }
             });
 
-          actions.put("mergeDatabase", new BaseAction() {
-            public void action() {
-
-                final MergeDialog md = new MergeDialog(frame, Globals.lang("Append database"), true);
-                Util.placeDialog(md, BasePanel.this);
-                md.setVisible(true);
-                if (md.okPressed) {
-                  String chosenFile = Globals.getNewFile(frame, Globals.prefs, new File(Globals.prefs.get("workingDirectory")),
-                                                         null, JFileChooser.OPEN_DIALOG, false);
-                  /*JFileChooser chooser = (Globals.prefs.get("workingDirectory") == null) ?
-                      new JabRefFileChooser((File)null) :
-                      new JabRefFileChooser(new File(Globals.prefs.get("workingDirectory")));
-                  chooser.addChoosableFileFilter( new OpenFileFilter() );//nb nov2
-                  int returnVal = chooser.showOpenDialog(BasePanel.this);*/
-                  if(chosenFile == null)
-                    return;
-                  fileToOpen = new File(chosenFile);
-
-                    // Run the actual open in a thread to prevent the program
-                    // locking until the file is loaded.
-                    (new Thread() {
-                        public void run() {
-                            openIt(md.importEntries(), md.importStrings(),
-                                    md.importGroups(), md.importSelectorWords());
-                        }
-                    }).start();
-                    frame.getFileHistory().newFile(fileToOpen.getPath());
-                }
-
-              }
-
-              void openIt(boolean importEntries, boolean importStrings,
-                          boolean importGroups, boolean importSelectorWords) {
-                if ((fileToOpen != null) && (fileToOpen.exists())) {
-                  try {
-                    Globals.prefs.put("workingDirectory", fileToOpen.getPath());
-                    // Should this be done _after_ we know it was successfully opened?
-                    String encoding = Globals.prefs.get("defaultEncoding");
-                    ParserResult pr = OpenDatabaseAction.loadDatabase(fileToOpen, encoding);
-                    mergeFromBibtex(pr, importEntries, importStrings, importGroups, importSelectorWords);
-                    output(Globals.lang("Imported from database")+" '"+fileToOpen.getPath()+"'");
-                    fileToOpen = null;
-                  } catch (Throwable ex) {
-                    ex.printStackTrace();
-                    JOptionPane.showMessageDialog
-                        (BasePanel.this, ex.getMessage(),
-                         "Open database", JOptionPane.ERROR_MESSAGE);
-                  }
-                }
-              }
-            });
+          actions.put("mergeDatabase", new AppendDatabaseAction(frame, this));
 
          actions.put("openFile", new BaseAction() {
            public void action() {
@@ -1555,100 +1505,6 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
         }
     }
 
-        public void mergeFromBibtex(ParserResult pr,
-                                    boolean importEntries, boolean importStrings,
-                                    boolean importGroups, boolean importSelectorWords)
-                throws KeyCollisionException {
-
-            BibtexDatabase fromDatabase = pr.getDatabase();
-            ArrayList appendedEntries = new ArrayList();
-            ArrayList originalEntries = new ArrayList();
-            BibtexEntry originalEntry;
-            NamedCompound ce = new NamedCompound(Globals.lang("Append database"));
-            MetaData meta = new MetaData(pr.getMetaData(), pr.getDatabase());
-
-            if (importEntries) { // Add entries
-                Iterator i = fromDatabase.getKeySet().iterator();
-                while (i.hasNext()) {
-                    originalEntry = fromDatabase.getEntryById((String) i.next());
-                    BibtexEntry be = (BibtexEntry) (originalEntry.clone());
-                    be.setId(Util.createNeutralId());
-                    database.insertEntry(be);
-                    appendedEntries.add(be);
-                    originalEntries.add(originalEntry);
-                    ce.addEdit(new UndoableInsertEntry(database, be, this));
-                }
-            }
-
-            if (importStrings) {
-                BibtexString bs;
-                int pos = 0;
-                Iterator i = fromDatabase.getStringKeySet().iterator();
-                for (; i.hasNext();) {
-                    bs = (BibtexString) (fromDatabase.getString(i.next()).clone());
-                    if (!database.hasStringLabel(bs.getName())) {
-                        //pos = toDatabase.getStringCount();
-                        database.addString(bs);
-                        ce.addEdit(new UndoableInsertString(this, database, bs));
-                    }
-                }
-            }
-
-            if (importGroups) {
-                GroupTreeNode newGroups = meta.getGroups();
-                if (newGroups != null) {
-
-                    // ensure that there is always only one AllEntriesGroup
-                    if (newGroups.getGroup() instanceof AllEntriesGroup) {
-                        // create a dummy group
-                        ExplicitGroup group = new ExplicitGroup("Imported",
-                                AbstractGroup.INDEPENDENT); // JZTODO lyrics
-                        newGroups.setGroup(group);
-                        for (int i = 0; i < appendedEntries.size(); ++i)
-                            group.addEntry((BibtexEntry) appendedEntries.get(i));
-                    }
-
-                    // groupsSelector is always created, even when no groups
-                    // have been defined. therefore, no check for null is
-                    // required here
-                    frame.groupSelector.addGroups(newGroups, ce);
-                    // for explicit groups, the entries copied to the mother fromDatabase have to
-                    // be "reassigned", i.e. the old reference is removed and the reference
-                    // to the new fromDatabase is added.
-                    GroupTreeNode node;
-                    ExplicitGroup group;
-                    BibtexEntry entry;
-                    for (Enumeration e = newGroups.preorderEnumeration(); e.hasMoreElements();) {
-                        node = (GroupTreeNode) e.nextElement();
-                        if (!(node.getGroup() instanceof ExplicitGroup))
-                            continue;
-                        group = (ExplicitGroup) node.getGroup();
-                        for (int i = 0; i < originalEntries.size(); ++i) {
-                            entry = (BibtexEntry) originalEntries.get(i);
-                            if (group.contains(entry)) {
-                                group.removeEntry(entry);
-                                group.addEntry((BibtexEntry) appendedEntries.get(i));
-                            }
-                        }
-                    }
-                    frame.groupSelector.revalidateGroups();
-                }
-            }
-
-            if (importSelectorWords) {
-                Iterator i = meta.iterator();
-                while (i.hasNext()) {
-                    String s = (String) i.next();
-                    if (s.startsWith(Globals.SELECTOR_META_PREFIX)) {
-                        metaData().putData(s, meta.getData(s));
-                    }
-                }
-            }
-
-            ce.end();
-            undoManager.addEdit(ce);
-            markBaseChanged();
-        }
 
 
     /**
@@ -2542,4 +2398,5 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
     public GroupSelector getGroupSelector() {
         return frame.groupSelector;
     }
+
 }
index a9facc0..4ad27d5 100644 (file)
@@ -155,7 +155,7 @@ public abstract class BibtexEntryType implements Comparable
             {
                 return new String[]
                 {
-                    "volume", "number", "series", "type", "address", "edition",
+                    "volume", "number", "pages", "series", "type", "address", "edition",
                    "month", "note"
                 };
             }
@@ -200,7 +200,7 @@ public abstract class BibtexEntryType implements Comparable
             {
                 return new String[]
                 {
-                    "volume", "number", "series", "address", "edition", "month",
+                    "volume", "number", "pages", "series", "address", "edition", "month",
                     "note"
                 };
             }
index 24c36ad..b62b17b 100644 (file)
@@ -25,10 +25,10 @@ public class BrowseAction extends AbstractAction implements ActionListener {
     public void actionPerformed(ActionEvent e) {
         String chosen = null;
         if (dir)
-            chosen = Globals.getNewDir(frame, Globals.prefs, new File(comp.getText()), Globals.NONE,
+            chosen = Globals.getNewDir(frame, new File(comp.getText()), Globals.NONE,
                     JFileChooser.OPEN_DIALOG, false);
         else
-            chosen = Globals.getNewFile(frame, Globals.prefs, new File(comp.getText()), Globals.NONE,
+            chosen = Globals.getNewFile(frame, new File(comp.getText()), Globals.NONE,
                     JFileChooser.OPEN_DIALOG, false);
         if (chosen != null) {
             File newFile = new File(chosen);
index b363528..62e379f 100644 (file)
@@ -94,18 +94,20 @@ public class EntryComparator implements Comparator {
     // sorted according to last name.
     if (sortField.equals("author") || sortField.equals("editor")) {
         if (f1 != null)
-        f1 = AuthorList.fixAuthorForAlphabetization((String)f1);
+        f1 = AuthorList.fixAuthorForAlphabetization((String)f1).toLowerCase();
                 //ImportFormatReader.fixAuthor_lastNameFirst((String)f1);
         if (f2 != null)
-        f2 = AuthorList.fixAuthorForAlphabetization((String)f2);
+        f2 = AuthorList.fixAuthorForAlphabetization((String)f2).toLowerCase();
                 //ImportFormatReader.fixAuthor_lastNameFirst((String)f2);
+
     } else if (sortField.equals(GUIGlobals.TYPE_HEADER)) {
           // Sort by type.
           f1 = e1.getType().getName();
           f2 = e2.getType().getName();
         }
 
-       if ((f1 == null) && (f2 == null)) return (next != null ? next.compare(o1, o2) : idCompare(e1, e2));
+
+    if ((f1 == null) && (f2 == null)) return (next != null ? next.compare(o1, o2) : idCompare(e1, e2));
        if ((f1 != null) && (f2 == null)) return -1;
        if ((f1 == null) && (f2 != null)) return 1;
 
@@ -122,9 +124,10 @@ public class EntryComparator implements Comparator {
                Integer f2AsInteger = new Integer(f2.toString());
                result = -(((Integer) f1).compareTo(f2AsInteger));
        } else {
-               String ours = ((String) f1).toLowerCase(),
+        String ours = ((String) f1).toLowerCase(),
                theirs = ((String) f2).toLowerCase();
-               int comp = ours.compareTo(theirs);
+        System.out.println(ours);
+        int comp = ours.compareTo(theirs);
                result = -comp;
        }
        if (result != 0)
index 98af0ec..5b7aabb 100644 (file)
@@ -295,7 +295,7 @@ class EntryCustomizationDialog extends JDialog implements ItemListener
        exportTypes.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    String filename = Globals.getNewFile
-                       (parent, Globals.prefs, new File(System.getProperty("user.home")), 
+                       (parent, new File(System.getProperty("user.home")),
                         ".txt", JFileChooser.SAVE_DIALOG, false);
                    if (filename == null) 
                        return;
@@ -330,7 +330,7 @@ class EntryCustomizationDialog extends JDialog implements ItemListener
        importTypes.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    String filename = Globals.getNewFile
-                       (parent, Globals.prefs, new File(System.getProperty("user.home")), 
+                       (parent, new File(System.getProperty("user.home")),
                         ".txt", JFileChooser.OPEN_DIALOG, false);
                    if (filename == null) 
                        return;
index fef7f07..0857133 100644 (file)
@@ -45,8 +45,6 @@ import net.sf.jabref.labelPattern.LabelPatternUtil;
 import net.sf.jabref.undo.*;
 import net.sf.jabref.external.ExternalFilePanel;
 import net.sf.jabref.journals.JournalAbbreviations;
-import com.michaelbaranov.microba.calendar.*;
-import com.michaelbaranov.microba.common.*;
 import net.sf.jabref.gui.date.*;
 
 public class EntryEditor extends JPanel implements VetoableChangeListener {
@@ -382,7 +380,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
               dir = prefs.get(fieldName + Globals.FILETYPE_PREFS_EXT, "");
 
             String chosenFile =
-              Globals.getNewFile(frame, prefs, new File(dir), "." + fieldName,
+              Globals.getNewFile(frame, new File(dir), "." + fieldName,
                 JFileChooser.OPEN_DIALOG, false);
 
             if (chosenFile != null) {
@@ -986,26 +984,22 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
     }
 
     public void actionPerformed(ActionEvent e) {
-        //Util.pr("EntryEditor.StoreFieldAction: "+entry.getCiteKey());
-        //Util.pr("..EntryEditor.StoreFieldAction: "+this.toString());
 
       if (e.getSource() instanceof FieldTextArea) {
         String toSet = null;
         FieldEditor fe = (FieldEditor) e.getSource();
         boolean set;
-          //Util.pr("....EntryEditor.StoreFieldAction: "+fe.getFieldName());
-        //Util.pr("...."+fe.getText()+"....");
         // Trim the whitespace off this value
         fe.setText(fe.getText().trim());
 
         if (fe.getText().length() > 0) {
           toSet = fe.getText();
-
-          // We check if the field has changed, since we don't want to
-          // mark the
-          // base as changed unless we have a real change.
         }
 
+
+        // We check if the field has changed, since we don't want to
+        // mark the
+        // base as changed unless we have a real change.
         if (toSet == null) {
           if (entry.getField(fe.getFieldName()) == null)
             set = false;
@@ -1049,6 +1043,15 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
                 oldValue, toSet));
             updateSource();
             panel.markBaseChanged();
+
+              // TODO: is this a safe solution to keep selection on entry?
+              SwingUtilities.invokeLater(new Runnable() {
+                  public void run() {
+                      panel.highlightEntry(entry);
+                  }
+              });
+
+
           } catch (IllegalArgumentException ex) {
             JOptionPane.showMessageDialog(frame, "Error: " + ex.getMessage(),
               Globals.lang("Error setting field"), JOptionPane.ERROR_MESSAGE);
diff --git a/src/java/net/sf/jabref/EntryTable.java b/src/java/net/sf/jabref/EntryTable.java
deleted file mode 100644 (file)
index 38c49a6..0000000
+++ /dev/null
@@ -1,842 +0,0 @@
-/*
-Copyright (C) 2003 Nizar N. Batada, Morten O. Alver
-
-All programs in this directory and
-subdirectories are published under the GNU General Public License as
-described below.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at
-your option) any later version.
-
-This program is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-USA
-
-Further information about the GNU GPL is available at:
-http://www.gnu.org/copyleft/gpl.ja.html
-
-*/
-
-package net.sf.jabref;
-
-import java.awt.*;
-import java.awt.event.*;
-import java.io.IOException;
-import java.util.Set;
-import java.util.HashSet;
-
-import javax.swing.*;
-import javax.swing.border.Border;
-import javax.swing.event.*;
-import javax.swing.plaf.basic.BasicTableUI;
-import javax.swing.table.*;
-
-public class EntryTable extends JTable {
-
-    final int PREFERRED_WIDTH = 400, PREFERRED_HEIGHT = 30;
-
-    // We use a subclassed JScrollPane with setBorder() overridden as
-    // a no-op. This is done to avoid the JTable setting its border,
-    // which it does whether we want it or not. And we don't. :)
-    JScrollPane sp = new JScrollPane((JTable)this) {
-            public void setBorder(Border b) {}
-        };
-
-    JPopupMenu rightClickMenu = null;
-    EntryTableModel tableModel;
-    JabRefPreferences prefs;
-    protected boolean showingSearchResults = false,
-        showingGroup = false;
-    private boolean antialiasing = Globals.prefs.getBoolean("antialias"),
-        ctrlClick = false,
-        selectionListenerOn = true,
-        tableColorCodes = true;
-    //RenderingHints renderingHints;
-    private BasePanel panel;
-    Set lastSelection = new HashSet();
-
-    private ListSelectionListener previewListener = null;
-    private int activeRow = -1;
-
-    ListSelectionListener groupsHighlightListener;
-
-    public EntryTable(EntryTableModel tm_, BasePanel panel_, JabRefPreferences prefs_) {
-        super(tm_);
-        this.tableModel = tm_;
-        setBorder(null);
-        panel = panel_;
-        // Add the global focus listener, so a menu item can see if this table was focused when
-        // an action was called.
-        addFocusListener(Globals.focusListener);
-
-        // enable DnD
-        setDragEnabled(true);
-        // The following line is commented because EntryTableTransferHandler's
-    // constructor now only accepts MainTable which has replaced EntryTable.
-    // setTransferHandler(new EntryTableTransferHandler(this));
-
-  //renderingHints = g2.getRenderingHints();
-         //renderingHints.put(RenderingHints.KEY_ANTIALIASING,
-        //                RenderingHints.VALUE_ANTIALIAS_ON);
-        //renderingHints.put(RenderingHints.KEY_RENDERING,
-        //                RenderingHints.VALUE_RENDER_QUALITY);
-        prefs = prefs_;
-        //antialiasing =
-        //System.out.println(antialiasing);
-        ctrlClick = prefs.getBoolean("ctrlClick");
-        tableColorCodes = prefs.getBoolean("tableColorCodesOn");
-        getTableHeader().setReorderingAllowed(false); // To prevent color bugs. Must be fixed.
-        setGridColor(Globals.prefs.getColor("gridColor"));
-        setShowVerticalLines(true);
-        setShowHorizontalLines(true);
-        //setColumnSelectionAllowed(true);
-        setColumnSelectionAllowed(false);
-        setRowSelectionAllowed(true);
-        setAutoResizeMode(prefs.getInt("autoResizeMode"));
-        DefaultCellEditor dce = new DefaultCellEditor(new JTextField());
-        dce.setClickCountToStart(2);
-        setDefaultEditor(String.class, dce);
-        getTableHeader().addMouseListener(new MouseAdapter() {
-          public void mouseClicked(MouseEvent e)
-          {
-            int col = getTableHeader().columnAtPoint(e.getPoint());
-            if (col >= 1) { //tableModel.padleft) { // A valid column, but not the first.
-              String s = tableModel.getFieldName(col);
-              /*
-               * If the user adjusts the header size the sort event is
-               * always triggered.
-               * To avoid this behaviour we check if the mouse is
-               * inside the label's bounds and has a certain distance (offset)
-               * to the label border.
-               *
-               * Sascha Hunold <hunoldinho@users.sourceforge.net>
-               */
-
-              Point p = e.getPoint();
-              int colindex = getTableHeader().columnAtPoint(p);
-              if( colindex >= 0 ) {
-                  final int initoffset = 3;
-                  int xoffset = initoffset;
-                  for (int i = 0; i < colindex; i++) {
-                      xoffset += getColumnModel().getColumn(i).getWidth();
-                  }
-                  TableColumn column = getColumnModel().getColumn(col);
-                  int cw = column.getWidth();
-                  int ch = getTableHeader().getHeight();
-
-                  Rectangle r = new Rectangle();
-
-                  r.setBounds(xoffset, 0/*offset*/, cw-2*initoffset, ch/*-2*offset*/);
-
-                  if (!r.contains(p)) {
-                      return;
-                  }
-              }
-
-              if (!s.equals(prefs.get("priSort"))) {
-                prefs.put("priSort", s);
-                  // Now, if the selected column is an icon column, set the sort to binary mode,
-                  // meaning that it only separates set fields from empty fields, and does no
-                  // internal sorting of set fields:
-                  if (tableModel.getIconTypeForColumn(col) == null)
-                      prefs.putBoolean("priBinary", false);
-                  else
-                      prefs.putBoolean("priBinary", true);
-              }
-                // ... or change sort direction
-              else prefs.putBoolean("priDescending",
-                                    !prefs.getBoolean("priDescending"));
-              tableModel.remap();
-
-            }
-          }
-        });
-
-        addMouseListener(new TableClickListener()); // Add the listener that responds to clicks on the table.
-
-        // Trying this to get better handling of the row selection stuff.
-        setSelectionModel(new javax.swing.DefaultListSelectionModel() {
-          public void setSelectionInterval(int index0, int index1) {
-            // Prompt user here
-            //Util.pr("Selection model: "+panel.entryEditorAllowsChange());
-            if (panel.entryEditorAllowsChange() == false) {
-              panel.moveFocusToEntryEditor();
-              return;
-            }
-            super.setSelectionInterval(index0, index1);
-          }
-        });
-
-        addSelectionListener(); // Add the listener that responds to new entry selection.
-
-        groupsHighlightListener = new ListSelectionListener() {
-            public void valueChanged(ListSelectionEvent e) {
-                /*
-                if (Globals.prefs.getBoolean("highlightGroupsMatchingAny"))
-                    panel.getGroupSelector().showMatchingGroups(
-                            panel.getSelectedEntries(), false);
-                else if (Globals.prefs.getBoolean("highlightGroupsMatchingAll"))
-                    panel.getGroupSelector().showMatchingGroups(
-                            panel.getSelectedEntries(), true);
-                else // no highlight
-                    panel.getGroupSelector().showMatchingGroups(null, true);
-                    */
-            }
-        };
-        getSelectionModel().addListSelectionListener(groupsHighlightListener);
-
-        // (to update entry editor or preview)
-        setWidths();
-        sp.getViewport().setBackground(Globals.prefs.getColor("tableBackground"));
-        updateFont();
-      }
-
-    /**
-     * Get the row number for the row that is active, in the sense that the preview or
-     * entry editor should show the corresponding entry.
-     * @return The active row number, or -1 if no row is active.
-     */
-    public int getActiveRow() {
-        return activeRow;
-    }
-
-
-    /**
-     * Get the active entry, in the sense that the preview or entry editor should
-     * show it.
-     * @return The active entry, or null if no row is active.
-     */
-
-    public BibtexEntry getActiveEntry() {
-        //System.out.println("EntryTable.getActiveEntry: "+activeRow);
-        return ((activeRow >= 0) && (activeRow < getRowCount())) ? tableModel.getEntryForRow(activeRow) : null;
-    }
-
-
-    /**
-     * Updates our Set containing the last row selection. Ckecks which rows were ADDED
-     * to the selection, to see what new entry should be previewed.
-     *
-     * This method may have some potential for optimization.
-     *
-     * @param rows
-     * @return The number of the row that should be considered active, or -1 if none.
-     */
-    private int resolveNewSelection(int[] rows) {
-        HashSet newSel = new HashSet();
-        for (int i=0; i<rows.length; i++) {
-            Integer row = new Integer(rows[i]);
-            newSel.add(row);
-        }
-        // Store a clone of this Set:
-        HashSet tmp = new HashSet(newSel);
-        newSel.removeAll(lastSelection);
-        // Set the new selection as the last:
-        lastSelection = tmp;
-        // We return an appropriate row number if a single additional entry was selected:
-        int result = -1;
-        if (newSel.size()==1)
-            result = ((Integer)newSel.iterator().next()).intValue();
-
-        // .. or if the current selection is only one entry:
-        if ((result<0) && (rows.length == 1))
-            result = rows[0];
-        return result;
-    }
-
-      /**
-       * A ListSelectionListener for updating the preview panel when the user selects an
-       * entry. Should only be active when preview is enabled.
-       */
-      public void addSelectionListener() {
-        if (previewListener == null)
-          previewListener = new ListSelectionListener() {
-            public void valueChanged(final ListSelectionEvent e) {
-              if (!selectionListenerOn) return;
-              if (!e.getValueIsAdjusting()) {
-                  // We must use invokeLater() to postpone the updating. This is because of
-                  // the situation where an EntryEditor has changes in one of the FieldEditors
-                  // that need to be stored. This storage is initiated by a focusLost() call,
-                  // and results in a call to refreshTable() in BasePanel, which messes
-                  // with the table selection. After that chain has finished, the selection
-                  // will have been reset correctly, so we make sure everything is ok by
-                  // putting the updating based on table selection behind it in the event queue.
-                  SwingUtilities.invokeLater(new Thread() {
-                          public void run() {
-                              // If a single new row was selected, set it as the active row:
-                              activeRow = resolveNewSelection(getSelectedRows());
-
-                              if (getSelectedRowCount() == 1) {
-                                  //int row = getSelectedRow(); //e.getFirstIndex();
-                                  //if (row >= 0) {
-                                      // Update the value for which entry is shown:
-                                    //  activeRow = row;
-
-                                    //panel.updateViewToSelected();
-                                    // guarantee that the the entry is visible
-                                    ensureVisible(activeRow);
-
-                              } else {
-                                  /* With a multiple selection, there are three alternative behaviours:
-                                     1. Disable the entry editor. Do not update it.
-                                     2. Do not disable the entry editor, and do not update it.
-                                     3. Update the entry editor, and keep it enabled.
-
-                                     We currently implement 1 and 2, and choose between them based on
-                                     prefs.getBoolean("disableOnMultipleSelection");
-                                  */
-                                  if (prefs.getBoolean("disableOnMultipleSelection")) { // 1.
-                                      panel.setEntryEditorEnabled(false);
-                                  }
-                                  // We want the entry preview to update when the user expands the
-                                  // selection one entry at a time:
-                                  //if ((e.getLastIndex()-e.getFirstIndex()) <= 1) {
-                                  //if (activeRow >= 0)
-                                    //panel.updateViewToSelected();
-                                  //}
-                                  // 2. Do nothing.
-                              }
-
-                              if (Globals.prefs.getBoolean("highlightGroupsMatchingAny"))
-                                panel.getGroupSelector().showMatchingGroups(
-                                    panel.getSelectedEntries(), false);
-                            else if (Globals.prefs.getBoolean("highlightGroupsMatchingAll"))
-                                panel.getGroupSelector().showMatchingGroups(
-                                    panel.getSelectedEntries(), true);
-                            else // no highlight
-                                panel.getGroupSelector().showMatchingGroups(null, true);
-                          }
-                      });
-              }
-            }
-              };
-        getSelectionModel().addListSelectionListener(previewListener);
-      }
-
-      /**
-       * Remove the preview listener.
-       */
-      public void disablePreviewListener() {
-        getSelectionModel().removeListSelectionListener(previewListener);
-      }
-
-      /**
-       * This method overrides the superclass' to disable the selection listener while the
-       * row selection is adjusted.
-       */
-      public void setRowSelectionInterval(int row1, int row2) {
-        boolean oldState = selectionListenerOn;
-        selectionListenerOn = false;
-        // Introducing a try-catch here to maybe track down the preview update bug
-        // that occurs sometimes (20050405 M. Alver):
-        try {
-            super.setRowSelectionInterval(row1, row2);
-            activeRow = resolveNewSelection(getSelectedRows());
-            selectionListenerOn = oldState;
-        } catch (IllegalArgumentException ex) {
-            ex.printStackTrace();
-            System.out.println("Error occured. Trying to recover...");
-            // Maybe try to remap the entry table:
-            tableModel.remap();
-            clearSelection();
-            selectionListenerOn = oldState;
-        }
-      }
-
-      public void addRowSelectionIntervalQuietly(int row1, int row2) {
-          boolean oldState = selectionListenerOn;
-          selectionListenerOn = false;
-          //if (row2 < getModel().getRowCount()) {
-          try {
-            super.addRowSelectionInterval(row1, row2);
-            selectionListenerOn = oldState;
-          } catch (IllegalArgumentException ex) {
-              ex.printStackTrace();
-              System.out.println("Error occured. Trying to recover...");
-            // Maybe try to remap the entry table:
-            tableModel.remap();
-            clearSelection();
-              selectionListenerOn = oldState;
-          }
-
-      }
-
-    /*public boolean surrendersFocusOnKeystroke() {
-        return true;
-        }*/
-
-      /**
-       * This method overrides the superclass' to disable the selection listener while the
-       * selection is cleared.
-       */
-      public void clearSelection() {
-        boolean oldState = selectionListenerOn;
-        selectionListenerOn = false;
-        super.clearSelection();
-        selectionListenerOn = oldState;
-      }
-
-      /**
-       * Enables or disables the selectionlistener. Useful if the selection needs to be
-       * updated in several steps, without the table responding between each.
-       * @param enabled boolean
-       */
-      public void setSelectionListenerEnabled(boolean enabled) {
-        selectionListenerOn = enabled;
-      }
-
-      /**
-       * Turns off any cell editing going on.
-       */
-      protected void assureNotEditing() {
-        if (isEditing()) {
-          int col = getEditingColumn(),
-              row = getEditingRow();
-          getCellEditor(row, col).stopCellEditing();
-        }
-      }
-
-
-    public void setWidths() {
-        // Setting column widths:
-        int ncWidth = prefs.getInt("numberColWidth");
-        String[] widths = prefs.getStringArray("columnWidths");
-        TableColumnModel cm = getColumnModel();
-        cm.getColumn(0).setPreferredWidth(ncWidth);
-        for (int i=1; i<tableModel.padleft; i++) {
-          // Lock the width of icon columns.
-          cm.getColumn(i).setPreferredWidth(GUIGlobals.WIDTH_ICON_COL);
-          cm.getColumn(i).setMinWidth(GUIGlobals.WIDTH_ICON_COL);
-          cm.getColumn(i).setMaxWidth(GUIGlobals.WIDTH_ICON_COL);
-        }
-        for (int i=tableModel.padleft; i<getModel().getColumnCount(); i++) {
-            try {
-                cm.getColumn(i).setPreferredWidth(Integer.parseInt(widths[i-tableModel.padleft]));
-            } catch (Throwable ex) {
-                Globals.logger("Exception while setting column widths. Choosing default.");
-                cm.getColumn(i).setPreferredWidth(GUIGlobals.DEFAULT_FIELD_LENGTH);
-            }
-            //cm.getColumn(i).setPreferredWidth(GUIGlobals.getPreferredFieldLength(getModel().getColumnName(i)));
-        }
-    }
-
-    public JScrollPane getPane() {
-                return sp;
-    }
-
-    /*public void setShowingSearchResults(boolean search,
-                                        boolean group) {
-        showingSearchResults = search;
-        showingGroup = group;
-    }
-*/
-    public void setRightClickMenu(JPopupMenu rcm) {
-        rightClickMenu = rcm;
-    }
-
-  /**
-   * This class handles clicks on the EntryTable that should trigger specific
-   * events, like opening an entry editor, the context menu or a pdf file.
-   */
-  class TableClickListener extends MouseAdapter {
-      public void mouseReleased(MouseEvent e) {
-          // First find the column on which the user has clicked.
-          final int col = columnAtPoint(e.getPoint()),
-              row = rowAtPoint(e.getPoint());
-          // Check if the user has right-clicked. If so, open the right-click menu.
-          if (e.isPopupTrigger()) {
-            processPopupTrigger(e, row, col);
-            return;
-          }
-      }
-      protected void processPopupTrigger(MouseEvent e, int row, int col) {
-          int selRow = getSelectedRow();
-          if (selRow == -1 ||// (getSelectedRowCount() == 0))
-                  !isRowSelected(rowAtPoint(e.getPoint()))) {
-            setRowSelectionInterval(row, row);
-            //panel.updateViewToSelected();
-          }
-          rightClickMenu = new RightClickMenu(panel, panel.metaData);
-          rightClickMenu.show(EntryTable.this, e.getX(), e.getY());
-      }
-      public void mousePressed(MouseEvent e) {
-
-        // First find the column on which the user has clicked.
-        final int col = columnAtPoint(e.getPoint()),
-            row = rowAtPoint(e.getPoint());
-
-
-        // A double click on an entry should open the entry's editor.
-        if (/*(col == 0)*/!isCellEditable(row, col) && (e.getClickCount() == 2)) {
-          try{ panel.runCommand("edit");
-              return;
-              /*showEntry(be);
-
-                    if (splitPane.getBottomComponent() != null) {
-                        new FocusRequester(splitPane.getBottomComponent());
-                    }                                                      */
-          } catch (Throwable ex) {
-            ex.printStackTrace();
-          }
-        }
-
-        // Check if the user has right-clicked. If so, open the right-click menu.
-        if (e.isPopupTrigger()) {
-          processPopupTrigger(e, row, col);
-          return;
-        }
-
-        // Check if the user has clicked on an icon cell to open url or pdf.
-        if (tableModel.getCellStatus(0, col) == EntryTableModel.ICON_COL) {
-
-          // Get the row number also:
-          Object value = getValueAt(row, col);
-          if (value == null) return; // No icon here, so we do nothing.
-          /*Util.pr("eouaeou");
-          JButton button = (JButton)value;
-
-          MouseEvent buttonEvent =
-              (MouseEvent)SwingUtilities.convertMouseEvent(ths, e, button);
-          button.dispatchEvent(buttonEvent);
-          // This is necessary so that when a button is pressed and released
-          // it gets rendered properly.  Otherwise, the button may still appear
-          // pressed down when it has been released.
-          ths.repaint();
-
-          */
-
-
-
-          // Get the icon type. Corresponds to the field name.
-          final String[] iconType = tableModel.getIconTypeForColumn(col);
-          int hasField = -1;
-          for (int i=iconType.length-1; i>= 0; i--)
-            if (tableModel.hasField(row, iconType[i]))
-              hasField = i;
-          if (hasField == -1)
-            return;
-          final String fieldName = iconType[hasField];
-
-          // Open it now. We do this in a thread, so the program won't freeze during the wait.
-          (new Thread() {
-            public void run() {
-              panel.output(Globals.lang("External viewer called") + ".");
-              BibtexEntry be = panel.database().getEntryById(tableModel.
-                      getIdForRow(row));
-              if (be == null) {
-                Globals.logger("Error: could not find entry.");
-                return;
-              }
-
-              Object link = be.getField(fieldName);
-              if (iconType == null) {
-                Globals.logger("Error: no link to " + fieldName + ".");
-                return; // There is an icon, but the field is not set.
-              }
-
-              try {
-                Util.openExternalViewer(panel.metaData, (String) link, fieldName);
-              }
-              catch (IOException ex) {
-                panel.output(Globals.lang("Error")+": "+ex.getMessage());
-              }
-            }
-
-          }).start();
-        }
-      }
-    }
-
-    public TableCellRenderer getCellRenderer(int row, int column) {
-
-        // This method asks the table model whether the given cell represents a
-        // required or optional field, and returns the appropriate renderer.
-        int score = -3;
-        TableCellRenderer renderer;
-
-        int status;
-        try { // This try clause is here to contain a bug.
-          status = tableModel.getCellStatus(row, column);
-        } catch (ArrayIndexOutOfBoundsException ex) {
-            Globals.logger("Error happened in getCellRenderer method of EntryTable, for cell ("+row+","+column+").");
-            return defRenderer; // This should not occur.
-        }
-
-
-        if (!panel.coloringBySearchResults ||
-            tableModel.nonZeroField(row, BibtexFields.SEARCH))
-            score++;
-        if (!panel.coloringByGroup ||
-            tableModel.nonZeroField(row, BibtexFields.GROUPSEARCH))
-            score+=2;
-
-        // Now, a grayed out renderer is for entries with -1, and
-        // a very grayed out one for entries with -2
-        if (score < -1)
-            renderer = veryGrayedOutRenderer;
-        else if (score == -1)
-            renderer = grayedOutRenderer;
-
-        else if (!tableColorCodes)
-            renderer = defRenderer;
-        else if (column == 0) {
-            // Return a renderer with red background if the entry is incomplete.
-            renderer = defRenderer;
-            if (tableModel.isComplete(row))
-                renderer = defRenderer;
-            else {
-              //if (tableModel.hasCrossRef(row))
-              //  renderer = maybeIncRenderer;
-              //else
-              renderer = incRenderer;//incompleteEntryRenderer;
-            }
-
-            //return (tableModel.isComplete(row) ? defRenderer: incRenderer);
-        }
-        else if (status == EntryTableModel.REQUIRED)
-            renderer = reqRenderer;
-        else if (status == EntryTableModel.OPTIONAL)
-            renderer = optRenderer;
-        else if (status == EntryTableModel.BOOLEAN)
-          renderer = getDefaultRenderer(Boolean.class);
-        else renderer = defRenderer;
-        //Util.pr("("+row+","+column+"). "+status+" "+renderer.toString());
-
-        // For MARKED feature:
-        if (tableModel.isMarked(row) && (renderer != incRenderer)) {
-          return markedRenderer;
-        }
-
-        return renderer;
-
-        /*
-        int test = row - 4*(row/4);
-        if (test <= 1)
-            return renderer;
-        else {
-            return renderer.darker();
-            }*/
-    }
-
-    public void scrollTo(int y) {
-        JScrollBar scb = sp.getVerticalScrollBar();
-        scb.setValue(y*scb.getUnitIncrement(1));
-    }
-
-    public BibtexEntry[] getSelectedEntries() {
-        BibtexEntry[] bes = null;
-        int[] rows = getSelectedRows();
-        //int[] cols = getSelectedColumns();
-
-        // Entries are selected if only the first or multiple
-        // columns are selected.
-        //if (((cols.length == 1) && (cols[0] == 0)) ||
-        //(cols.length > 1)) { // entryTable.getColumnCount())) {
-        if (rows.length > 0) {
-            bes = new BibtexEntry[rows.length];
-            for (int i=0; i<rows.length; i++) {
-                bes[i] = tableModel.db.getEntryById(tableModel.getIdForRow(rows[i]));
-            }
-        }
-        return bes;
-    }
-
-
-    // The following classes define the renderers used to render required
-    // and optional fields in the table. The purpose of these renderers is
-    // to visualize which fields are needed for each entry.
-   private GeneralRenderer defRenderer = new GeneralRenderer(Globals.prefs.getColor("tableBackground"),
-            Globals.prefs.getColor("tableText"), antialiasing),
-        reqRenderer = new GeneralRenderer(Globals.prefs.getColor("tableReqFieldBackground"), Globals.prefs.getColor("tableText"), antialiasing),
-        optRenderer = new GeneralRenderer(Globals.prefs.getColor("tableOptFieldBackground"), Globals.prefs.getColor("tableText"), antialiasing),
-        incRenderer = new IncompleteRenderer(this, antialiasing),
-            //new Renderer(GUIGlobals.tableIncompleteEntryBackground),
-            //Globals.lang("This entry is incomplete")),
-        grayedOutRenderer = new GeneralRenderer(Globals.prefs.getColor("grayedOutBackground"),
-                                         Globals.prefs.getColor("grayedOutText"), antialiasing),
-        veryGrayedOutRenderer = new GeneralRenderer(Globals.prefs.getColor("veryGrayedOutBackground"),
-                                             Globals.prefs.getColor("veryGrayedOutText"), antialiasing),
-        markedRenderer = new GeneralRenderer(Globals.prefs.getColor("markedEntryBackground"),
-                Globals.prefs.getColor("tableText"), antialiasing);
-
-    class IncompleteRenderer extends GeneralRenderer {
-        public IncompleteRenderer(JTable table, boolean antialiasing) {
-            super(Globals.prefs.getColor("incompleteEntryBackground"), antialiasing);
-        }
-        protected void setValue(Object value) {
-            super.setValue(value);
-            super.setToolTipText(Globals.lang("This entry is incomplete"));
-        }
-    }
-
-    /* public TableCellRenderer iconRenderer = new IconCellRenderer();
-        //new JTableButtonRenderer(getDefaultRenderer(JButton.class));
-    class IconCellRenderer extends DefaultTableCellRenderer {
-        protected void setValue(Object value) {
-            if (value instanceof Icon) {
-                setIcon((Icon)value);
-                super.setValue(null);
-            } else {
-                setIcon(null);
-                super.setValue(value);
-            }
-        }
-    }
-
-
-   class JTableButtonRenderer implements TableCellRenderer {
-      private TableCellRenderer __defaultRenderer;
-
-      public JTableButtonRenderer(TableCellRenderer renderer) {
-        __defaultRenderer = renderer;
-      }
-
-      public Component getTableCellRendererComponent(JTable table, Object value,
-                                                     boolean isSelected,
-                                                     boolean hasFocus,
-                                                     int row, int column)
-      {
-        if(value instanceof Component)
-          return (Component)value;
-        return __defaultRenderer.getTableCellRendererComponent(
-      table, value, isSelected, hasFocus, row, column);
-      }
-    }*/
-
-
-    public void ensureVisible(int row) {
-        JScrollBar vert = sp.getVerticalScrollBar();
-        int y = row*getRowHeight();
-        if ((y < vert.getValue()) || (y > vert.getValue()+vert.getVisibleAmount()))
-            scrollToCenter(row, 1);
-    }
-
-        public void scrollToCenter( int rowIndex, int vColIndex) {
-        if (!(this.getParent() instanceof JViewport)) {
-            return;
-        }
-
-        JViewport viewport = (JViewport)this.getParent();
-
-        // This rectangle is relative to the table where the
-        // northwest corner of cell (0,0) is always (0,0).
-        Rectangle rect = this.getCellRect(rowIndex, vColIndex, true);
-
-        // The location of the view relative to the table
-        Rectangle viewRect = viewport.getViewRect();
-
-         // Translate the cell location so that it is relative
-        // to the view, assuming the northwest corner of the
-        // view is (0,0).
-        rect.setLocation(rect.x-viewRect.x, rect.y-viewRect.y);
-
-        // Calculate location of rect if it were at the center of view
-        int centerX = (viewRect.width-rect.width)/2;
-        int centerY = (viewRect.height-rect.height)/2;
-
-        // Fake the location of the cell so that scrollRectToVisible
-        // will move the cell to the center
-        if (rect.x < centerX) {
-            centerX = -centerX;
-        }
-        if (rect.y < centerY) {
-            centerY = -centerY;
-        }
-        rect.translate(centerX, centerY);
-
-        // Scroll the area into view.
-        viewport.scrollRectToVisible(rect);
-
-        revalidate();
-        repaint();
-    }
-
-  /**
-   * updateFont
-   */
-  public void updateFont() {
-      setFont(GUIGlobals.CURRENTFONT);
-      setRowHeight(GUIGlobals.TABLE_ROW_PADDING+GUIGlobals.CURRENTFONT.getSize());
-  }
-
-  public void updateUI() {
-      super.updateUI();
-      setUI(new CustomTableUI());
-  }
-
-
-
-  class CustomTableUI extends BasicTableUI {
-    public void installUI(JComponent c) {
-      super.installUI(c);
-      c.remove(rendererPane);
-      rendererPane = new CustomCellRendererPane();
-      c.add(rendererPane);
-    }
-
-    /**
-     * Overrides paintComponent to NOT clone the Graphics
-     * passed in and NOT validate the Component passed in.
-     * This is done for performance reasons.
-     */
-    private class CustomCellRendererPane extends CellRendererPane {
-        private Rectangle tmpRect = new Rectangle();
-
-        public void repaint() {
-        }
-
-        public void repaint(int x, int y, int width, int height) {
-        }
-
-        public void paintComponent(Graphics g, Component c, Container p,
-                                   int x, int y, int w, int h,
-                                   boolean shouldValidate) {
-          if (c == null) {
-            if (p != null) {
-              Color oldColor = g.getColor();
-              g.setColor(p.getBackground());
-              g.fillRect(x, y, w, h);
-              g.setColor(oldColor);
-            }
-            return;
-          }
-          if (c.getParent() != this) {
-            this.add(c);
-          }
-
-          c.setBounds(x, y, w, h);
-
-          boolean wasDoubleBuffered = false;
-          JComponent jc = (c instanceof JComponent) ? (JComponent)c : null;
-          if (jc != null && jc.isDoubleBuffered()) {
-            wasDoubleBuffered = true;
-            jc.setDoubleBuffered(false);
-          }
-
-          // Don't create a new Graphics, reset the clip and translate
-          // the origin.
-          Rectangle clip = g.getClipBounds(tmpRect);
-          g.clipRect(x, y, w, h);
-          g.translate(x, y);
-          c.paint(g);
-          g.translate(-x, -y);
-          g.setClip(clip.x, clip.y, clip.width, clip.height);
-          if (wasDoubleBuffered) {
-            jc.setDoubleBuffered(true);
-          }
-          c.setBounds(-w, -h, 0, 0);
-        }
-      }
-
-    }
-
-}
-
diff --git a/src/java/net/sf/jabref/EntryTableModel.java b/src/java/net/sf/jabref/EntryTableModel.java
deleted file mode 100644 (file)
index bd7263a..0000000
+++ /dev/null
@@ -1,592 +0,0 @@
-/*
- Copyright (C) 2003 Nizar N. Batada, Morten O. Alver
-
- All programs in this directory and
- subdirectories are published under the GNU General Public License as
- described below.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or (at
- your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- USA
-
- Further information about the GNU GPL is available at:
- http://www.gnu.org/copyleft/gpl.ja.html
-
- */
-
-package net.sf.jabref;
-
-import javax.swing.*;
-import javax.swing.table.*;
-import net.sf.jabref.export.LatexFieldFormatter;
-import java.util.*;
-
-public class EntryTableModel
-    extends AbstractTableModel {
-
-  BibtexDatabase db;
-  BasePanel panel;
-  JabRefFrame frame;
-  String[] columns; // Contains the current column names.
-  private EntrySorter sorter;
-  private int visibleRows = 0;
-
-
-  // Testing something:
-  Object[][] allCache = null;
-
-  //private Object[] entryIDs; // Temporary
-
-  // Constants used to define how a cell should be rendered.
-  public static final int REQUIRED = 1, OPTIONAL = 2,
-      REQ_STRING = 1,
-      REQ_NUMBER = 2,
-      OPT_STRING = 3,
-      OTHER = 3,
-      BOOLEAN = 4,
-      //PDF_COL = 1, // The column displaying icons for linked pdfs.
-      ICON_COL = 8; // Constant to indicate that an icon cell renderer should be used.
-  public static final String[]
-      PDF = {"pdf", "ps"},
-      URL_ = {"url", "doi"},
-        CITESEER = {"citeseerurl"};
-
-  public int padleft = -1; // padleft indicates how many columns (starting from left) are
-  // special columns (number column or icon column).
-  private HashMap iconCols = new HashMap();
-  int[] nameCols = null;
-  boolean showShort, namesNatbib, namesLastOnly;                               //MK:
-  boolean namesAsIs, namesFf, namesLf, abbr_names;              //MK:
-
-    //ImageIcon pdfIcon = new ImageIcon(GUIGlobals.pdfSmallIcon);
-
-  public EntryTableModel(JabRefFrame frame_,
-                         BasePanel panel_,
-                         BibtexDatabase db_) {
-    panel = panel_;
-    frame = frame_;
-    db = db_;
-
-    columns = Globals.prefs
-        .getStringArray("columnNames"); // This must be done again if the column
-    // preferences get changed.
-
-    remap();
-  }
-
-  /* This is the old getColumnName().
-   * This function now returns the field name
-   * with the original lower/upper case of the field name */
-  public String getFieldName(int col) {
-    if (col == 0) {
-      return GUIGlobals.NUMBER_COL;
-    }
-    else if (getIconTypeForColumn(col) != null) {
-      return getIconTypeForColumn(col)[0];
-    }
-    return columns[col - padleft];
-  }
-
-  public String getColumnName(int col) {
-      if (col == 0) {
-      return GUIGlobals.NUMBER_COL;
-    }
-    else if (getIconTypeForColumn(col) != null) {
-      return "";
-    }
-    else // try to find an alternative fieldname (for display)
-    {
-       String disName = BibtexFields.getFieldDisplayName(columns[col - padleft]) ;
-       if ( disName != null)
-       {
-         return disName ;
-       }
-    }
-    return Util.nCase(columns[col - padleft]);
-  }
-
-  public void showAllEntries() {
-    visibleRows = sorter.getEntryCount();
-    }
-
-  public void setRowCount(int rows) {
-    visibleRows = rows;
-    }
-
-  public int getRowCount() {
-    //Util.pr("rc "+sorter.getEntryCount());
-    //return sorter.getEntryCount();
-      return visibleRows;
-    //entryIDs.length;  // Temporary?
-  }
-
-  public int getColumnCount() {
-    return padleft + columns.length;
-  }
-
-  public Class getColumnClass(int column) {
-
-    //return (getIconTypeForColumn(column) != null ? Icon.class : String.class);
-      if (column == 0)
-      return Boolean.class;
-      else
-      return (getIconTypeForColumn(column) != null ? JLabel.class : String.class);
-  }
-
-  public Object getValueAt_(int row, int col) {
-      return allCache[row][col];
-  }
-
-  public void updateAllCache() {
-      /*long start = System.currentTimeMillis();
-      int rows = getRowCount();
-      int cols = getColumnCount();
-      allCache = new Object[rows][cols];
-      for (int row=0; row<rows; row++)
-          for (int col=0; col<cols; col++)
-              allCache[row][col] = getValueAt_old(row, col);
-      Globals.logger("Time spent: "+(System.currentTimeMillis()-start));*/
-  }
-
-  public Object getValueAt(int row, int col) {
-    // Return the field named frame.prefs.columnNames[col] from the Entry
-    // corresponding to the row.
-    Object o;
-    BibtexEntry be = sorter.getEntryAt(row);
-    String[] iconType = getIconTypeForColumn(col); // If non-null, indicates an icon column's type.
-    if (col == 0) {
-        o = "" + (row + 1);
-    }
-/*      if (!isComplete(row)) {
-              //JLabel incomplete = new JLabel("" + (row + 1),GUIGlobals.incompleteLabel.getIcon(), JLabel.RIGHT);
-        //JLabel incomplete = new JLabel("" + (row + 1));
-        //incomplete.setToolTipText(Globals.lang("This entry is incomplete"));
-        //return incomplete;
-      } else
-*/
-
-    else if (iconType != null) {
-      int hasField = -1;
-      for (int i=iconType.length-1; i>= 0; i--)
-        if (hasField(row, iconType[i]))
-          hasField = i;
-      if (hasField < 0)
-        return null;
-
-      // Ok, so we are going to display an icon. Find out which one, and return it:
-      return GUIGlobals.getTableIcon(iconType[hasField]);
-    }
-    //  if (col == 1)
-    //  o = be.getType().getName();
-    //else {
-    else if (columns[col - padleft].equals(GUIGlobals.TYPE_HEADER)) {
-      o = be.getType().getName();
-    }
-    //else if (columns[col-PADLEFT].equals(GUIGlobals.NUMBER_COL)) {
-    //  o = ""+(row+1);
-    //}
-    else {
-
-    //MK:vvv
-    o = null; if (showShort) o = be.getField("short"+columns[col-padleft]);   //MK:vvv
-       if (o==null) {
-         o = be.getField(columns[col - padleft]);
-         for (int i = 0; i < nameCols.length; i++) {
-           if (col - padleft == nameCols[i]) {
-             if (o == null) { return null; }
-             if (namesAsIs) return o;
-             if (namesNatbib) o = AuthorList.fixAuthor_Natbib((String)o);
-             else if (namesLastOnly) o = AuthorList.fixAuthor_lastNameOnlyCommas((String)o);
-             else if (namesFf) o = AuthorList.fixAuthor_firstNameFirstCommas((String) o, abbr_names);
-             else if (namesLf) o = AuthorList.fixAuthor_lastNameFirstCommas((String) o, abbr_names);
-
-             return o;
- //            if (!namesAsIs) {
- //              if (namesFf) {
- //                return ImportFormatReader.fixAuthor_firstNameFirst( (String) o);
- //              }
- //              else {
- //                return ImportFormatReader.fixAuthor_lastNameFirst( (String)o);
- //              }
- //            }
-  //MK:^^^
-          }
-     }
-       }
-    }
-    /*if (o != null) {
-        String processed = Globals.getCached((String)o);
-        if (processed == null) {
-            StringBuffer sb = new StringBuffer("");//"<html>");
-            sb.append((String)o);
-            //sb.append("</html>");
-            processed = sb.toString();
-            Globals.cache((String)o, processed);
-            o = processed;
-        } else
-            o = processed;
-
-
-    }*/
-    return o;
-  }
-
-  /**
-   * This method returns a string array indicating the types of icons to be displayed in the given column.
-   * It returns null if the column is not an icon column, and thereby also serves to identify icon
-   * columns.
-   */
-  public String[] getIconTypeForColumn(int col) {
-    Object o = iconCols.get(new Integer(col));
-    if (o != null)
-      return (String[])o;
-    else
-      return null;
-  }
-
-  public int getCellStatus(int row, int col) {
-    //if ((col == 0)  || (col == 1)) return OTHER;
-    if (col == 0) {
-      return BOOLEAN;
-    }
-    if (getIconTypeForColumn(col) != null) {
-      return ICON_COL;
-    }
-
-    BibtexEntryType type = (db.getEntryById(getIdForRow(row)))
-        .getType();
-    if (columns[col - padleft].equals(BibtexFields.KEY_FIELD)
-        || type.isRequired(columns[col - padleft])) {
-      return REQUIRED;
-    }
-    if (type.isOptional(columns[col - padleft])) {
-      return OPTIONAL;
-    }
-    return OTHER;
-  }
-
-  public boolean isComplete(int row) {
-    BibtexEntry be = db.getEntryById(getIdForRow(row));
-    return (be != null ? be.hasAllRequiredFields() : false);
-  }
-
-  public boolean hasCrossRef(int row) {
-    BibtexEntry be = db.getEntryById(getIdForRow(row));
-    return (be.getField("crossref") != null);
-  }
-
-  public boolean nonZeroField(int row, String field) {
-    // Returns true iff the entry has a nonzero value in its
-    // 'search' field.
-    BibtexEntry be = db.getEntryById(getIdForRow(row));
-    if (be == null)
-        return false; // TODO: JZ: I think this should never happen, but it does
-    String o = (String) (be.getField(field));
-    return ( (o != null) && !o.equals("0"));
-  }
-
-  public boolean hasField(int row, String field) {
-    // Returns true iff the entry has a nonzero value in its
-    // 'search' field.
-    BibtexEntry be = db.getEntryById(getIdForRow(row));
-    return ((be != null) && (be.getField(field) != null));
-  }
-
-  private void updateSorter() {
-
-    // Set the icon columns, indicating the number of special columns to the left.
-    // We add those that are enabled in preferences.
-    iconCols.clear();
-    int coln = 1;
-    if (Globals.prefs.getBoolean("pdfColumn"))
-      iconCols.put(new Integer(coln++), PDF);
-    if (Globals.prefs.getBoolean("urlColumn"))
-      iconCols.put(new Integer(coln++), URL_);
-    if (Globals.prefs.getBoolean("citeseerColumn"))
-        iconCols.put(new Integer(coln++), CITESEER);
-
-    // Add 1 to the number of icon columns to get padleft.
-    padleft = 1+iconCols.size();
-
-    // Set up the int[] nameCols, to mark which columns should be
-    // treated as lists of names. This is to provide a correct presentation
-    // of names as efficiently as possible.
-    Vector tmp = new Vector(2, 1);
-    for (int i = 0; i < columns.length; i++) {
-      if (columns[i].equals("author")
-          || columns[i].equals("editor")) {
-        tmp.add(new Integer(i));
-      }
-    }
-    nameCols = new int[tmp.size()];
-    for (int i = 0; i < nameCols.length; i++) {
-      nameCols[i] = ( (Integer) tmp.elementAt(i)).intValue();
-    }
-    showShort = Globals.prefs.getBoolean("showShort");        //MK:
-    namesNatbib = Globals.prefs.getBoolean("namesNatbib");    //MK:
-    namesLastOnly = Globals.prefs.getBoolean("namesLastOnly");
-
-    namesAsIs = Globals.prefs.getBoolean("namesAsIs");
-    abbr_names = Globals.prefs.getBoolean("abbrAuthorNames"); //MK:
-    namesFf = Globals.prefs.getBoolean("namesFf");
-    namesLf = !(namesAsIs || namesFf || namesNatbib || namesLastOnly); // None of the above.
-        //namesLastOnly = Globals.prefs.getBoolean("namesLastOnly");
-    // Build a vector of prioritized search objectives,
-    // then pick the 3 first.
-    List fields = new ArrayList(6),
-        directions = new ArrayList(6),
-        binary = new ArrayList(6); // Signifies whether the sort criterion should only separate on/off or
-                                    // also sort within set field values.
-
-    // For testing MARKED feature. With this IF clause, the marked entries will only float to the top when
-    // no sorting/grouping reordering is active.
-    if  (!panel.sortingBySearchResults && !panel.sortingByCiteSeerResults && !panel.sortingByGroup) {
-        fields.add(BibtexFields.MARKED);
-        directions.add(Boolean.TRUE);
-        binary.add(Boolean.FALSE);
-    }
-    if (panel.sortingByGroup) {
-      // Group search has the highest priority if active.
-      fields.add(BibtexFields.GROUPSEARCH);
-      directions.add(Boolean.TRUE);
-        binary.add(Boolean.FALSE);
-    }
-    if (panel.sortingBySearchResults) {
-      // Normal search has priority over regular sorting.
-      fields.add(BibtexFields.SEARCH);
-      directions.add(Boolean.TRUE);
-        binary.add(Boolean.FALSE);
-    }
-    if(panel.sortingByCiteSeerResults) {
-        fields.add("citeseercitationcount");
-        directions.add(Boolean.TRUE);
-        binary.add(Boolean.FALSE);
-    }
-
-    // Then the sort options:
-    directions.add(Boolean.valueOf(frame.prefs.getBoolean("priDescending")));
-    directions.add(Boolean.valueOf(frame.prefs.getBoolean("secDescending")));
-    directions.add(Boolean.valueOf(frame.prefs.getBoolean("terDescending")));
-    fields.add(frame.prefs.get("priSort"));
-    fields.add(frame.prefs.get("secSort"));
-    fields.add(frame.prefs.get("terSort"));
-    binary.add(Boolean.valueOf(Globals.prefs.getBoolean("priBinary"))); // TRUE if we are sorting on an icon.
-    binary.add(Boolean.FALSE);
-    binary.add(Boolean.FALSE);
-
-    // Remove the old sorter as change listener for the database:
-    if (sorter != null)
-    db.removeDatabaseChangeListener(sorter);
-
-    // Then pick the up to four highest ranking ones, and go.
-      int piv = Math.min(directions.size()-1, 3);
-      Comparator comp = new EntryComparator(
-              ((Boolean)binary.get(piv)).booleanValue(),
-              ((Boolean)directions.get(piv)).booleanValue(),
-              (String)fields.get(piv));
-      piv--;
-      while (piv >= 0) {
-          // Loop down towards the highest ranking criterion, wrapping new sorters around the
-          // ones we have:
-          String field = (String)fields.get(piv);
-          if (field.equals(BibtexFields.MARKED)) {
-                comp = new MarkedComparator(comp);
-          }
-          else
-            comp = new EntryComparator(
-                  ((Boolean)binary.get(piv)).booleanValue(),
-                  ((Boolean)directions.get(piv)).booleanValue(),
-                  field,
-                  comp);
-          piv--;
-      }
-
-      sorter = db.getSorter(comp);
-
-
-  }
-
-    /**
-     * Remaps and resorts the table model.
-     */
-    public void remap() {
-    updateSorter();
-    showAllEntries(); // Update the visible row count.
-        updateAllCache();
-    fireTableDataChanged();
-
-    }
-
-    /**
-     * Remaps and resorts the table model, and restricts the row number
-     * as directed.
-     */
-    public void remap(int rows) {
-    updateSorter();
-    setRowCount(rows);
-        updateAllCache();
-    fireTableDataChanged();
-    }
-
-    /**
-     * Quick remap of the table model. Sufficient for all operations except
-     * those that require a changed sort regime.
-     */
-    public void update() {
-    sorter.index();
-    showAllEntries();
-        updateAllCache();
-    fireTableDataChanged();
-
-    }
-
-    /**
-     * Quick remap of the table model. Sufficient for all operations except
-     * those that require a changed sort regime.
-     * Restricts the row number as directed.
-     */
-    public void update(int rows) {
-    sorter.index();
-    setRowCount(rows);
-        updateAllCache();
-    fireTableDataChanged();
-    }
-
-  public boolean isCellEditable(int row, int col) {
-    if (!Globals.prefs.getBoolean("allowTableEditing"))
-      return false;
-
-    if (col < padleft) {
-      return false;
-    }
-    // getColumnClass will throw a NullPointerException if there is no
-    // entry in FieldTypes.GLOBAL_FIELD_TYPES for the column.
-    try {
-      if (!getFieldName(col).equals(GUIGlobals.TYPE_HEADER)) {
-
-//         getColumnClass(col);
-        return true;
-      }
-      else {
-        return false;
-      }
-    }
-    catch (NullPointerException ex) {
-      return false;
-    }
-  }
-
-  public void setValueAt(Object value, int row, int col) {
-    // Called by the table cell editor when the user has edited a
-    // field. From here the edited value is stored.
-
-    BibtexEntry be = db.getEntryById(getIdForRow(row));
-    boolean set = false;
-    String toSet = null,
-        fieldName = getFieldName(col),
-        text;
-    if (value != null) {
-      text = value.toString();
-      if (text.length() > 0) {
-        toSet = text;
-        Object o;
-        if ( ( (o = be.getField(fieldName)) == null)
-            || ( (o != null)
-                && !o.toString().equals(toSet))) {
-          set = true;
-        }
-      }
-      else if (be.getField(fieldName) != null) {
-        set = true;
-      }
-    }
-    if (set) {
-      try {
-        if (toSet != null) {
-          (new LatexFieldFormatter()).format
-              (toSet, fieldName);
-        }
-
-        // Store this change in the UndoManager to facilitate undo.
-        Object oldVal = be.getField(fieldName);
-        panel.undoManager.addEdit
-            (new net.sf.jabref.undo.UndoableFieldChange
-             (be, fieldName.toLowerCase(), oldVal, toSet));
-        // .. ok.
-
-        be.setField(fieldName, toSet);
-        panel.markBaseChanged();
-        //panel.updateViewToSelected();
-        //panel.updateEntryEditorIfShowing();
-        // Should the table also be scheduled for repaint?
-      }
-      catch (IllegalArgumentException ex) {
-        //frame.output("Invalid field format. Use '#' only in pairs wrapping "
-        //       +"string names.");
-        frame.output("Invalid field format: " + ex.getMessage());
-      }
-    }
-  }
-
-   /**
-    * Returns the internal ID of the entry at the given row.
-    * @param number The row number.
-    * @return The ID for the entry at the given row.
-    */
-  public String getIdForRow(int number) {
-    // Return the name of the Entry corresponding to the row. The
-    // Entry will be retrieved from a DatabaseQuery. This is just
-    // a temporary implementation.
-    return sorter.getIdAt(number);
-    //entryIDs[number].toString();
-  }
-
-    /**
-     * Returns the entry currently displayed at the given row.
-     * @param row The row.
-     * @return The entry at the given row.
-     */
-  public BibtexEntry getEntryForRow(int row) {
-      return sorter.getEntryAt(row);
-  }
-
-  public int getNumberFromName(String name) {
-    // Not very fast. Intended for use only in highlighting erronous
-    // entry if save fails.
-    int res = -1, i = 0;
-    while ( (i < sorter.getEntryCount()) && (res < 0)) {
-      if (name.equals(sorter.getIdAt(i))) {
-        res = i;
-      }
-      i++;
-    }
-    return res;
-  }
-
-    /**
-     * Returns true iff the entry's Globals.MARKED field contains the
-     * current user's wrapped username.
-     * @param row The table row where the entry is.
-     * @return true if the MARKED field contains the wrapped username.
-     */
-    public boolean isMarked(int row) {
-        BibtexEntry be = db.getEntryById(getIdForRow(row));
-        if (be == null)
-            return false;
-        return Util.isMarked(be);
-
-    }
-
-
-}
index 3b93347..ddded3b 100644 (file)
@@ -46,7 +46,8 @@ public class FieldComparator implements Comparator {
                        f1 = AuthorList.fixAuthorForAlphabetization((String)f1);
                if (f2 != null)
                        f2 = AuthorList.fixAuthorForAlphabetization((String)f2);
-           }
+            //System.out.println(".. "+f1);
+        }
         else if (isTypeHeader) {
           // Sort by type.
           f1 = e1.getType().getName();
@@ -58,7 +59,7 @@ public class FieldComparator implements Comparator {
            if (f1 == null) return multiplier;
 
            int result = 0;
-
+        //System.out.println(f1);
            if ((f1 instanceof Integer) && (f2 instanceof Integer)) {
                    result = -(((Integer) f1).compareTo((Integer) f2));
            } else if (f2 instanceof Integer) {
@@ -70,7 +71,8 @@ public class FieldComparator implements Comparator {
        } else {
                String ours = ((String) f1).toLowerCase(),
                theirs = ((String) f2).toLowerCase();
-               result = ours.compareTo(theirs);
+            //System.out.println(ours);
+            result = ours.compareTo(theirs);
        }
 
         return result*multiplier;
index f7e3fe6..15a73ae 100644 (file)
@@ -33,7 +33,6 @@ import java.util.logging.* ;
 import java.util.logging.Filter ;
 
 import java.awt.* ;
-import java.nio.charset.Charset;
 import javax.swing.* ;
 
 import net.sf.jabref.collab.* ;
@@ -205,8 +204,8 @@ public class Globals {
     }
     catch (MissingResourceException ex) {
       translation = key;
-      //logger("Warning: could not get translation for \""
-      //                   + key + "\"");
+      logger("Warning: could not get translation for \""
+                         + key + "\"");
     }
     if ((translation != null) && (translation.length() != 0)) {
       translation = translation.replaceAll("_", " ");
@@ -369,49 +368,55 @@ public class Globals {
     /*    public static void setupKeyBindings(JabRefPreferences prefs) {
     }*/
 
-  public static String getNewFile(JFrame owner, JabRefPreferences prefs,
+
+    public static String[] getMultipleFiles(JFrame owner,
+                                          File directory, String extension,
+                                          boolean updateWorkingdirectory) {
+
+        OpenFileFilter off = null;
+        if (extension == null)
+          off = new OpenFileFilter();
+        else if (!extension.equals(NONE))
+          off = new OpenFileFilter(extension);
+        return (String[])getNewFileImpl(owner, directory, extension, null, off,
+                JFileChooser.OPEN_DIALOG, updateWorkingdirectory, false, true);
+    }
+
+  public static String getNewFile(JFrame owner,
                                   File directory, String extension,
                                   int dialogType,
                                   boolean updateWorkingDirectory) {
-    return getNewFile(owner, prefs, directory, extension, null, dialogType,
+    return getNewFile(owner, directory, extension, null, dialogType,
                       updateWorkingDirectory, false);
   }
 
 
-  public static String getNewFile(JFrame owner, JabRefPreferences prefs,
+  public static String getNewFile(JFrame owner,
                                   File directory, String extension,
                                   String description,
                                   int dialogType,
                                   boolean updateWorkingDirectory) {
-    return getNewFile(owner, prefs, directory, extension, description, dialogType,
+    return getNewFile(owner, directory, extension, description, dialogType,
                       updateWorkingDirectory, false);
   }
 
 
-  public static String getNewFile(JFrame owner, JabRefPreferences prefs,
-                                  File directory, String extension, OpenFileFilter off,
-                                  int dialogType,
-                                  boolean updateWorkingDirectory) {
-    return getNewFile(owner, prefs, directory, extension, null, off, dialogType,
-                      updateWorkingDirectory, false);
-  }
-
-  public static String getNewDir(JFrame owner, JabRefPreferences prefs,
+  public static String getNewDir(JFrame owner,
                                  File directory, String extension,
                                  int dialogType, boolean updateWorkingDirectory) {
-    return getNewFile(owner, prefs, directory, extension, null, dialogType,
+    return getNewFile(owner, directory, extension, null, dialogType,
                       updateWorkingDirectory, true);
   }
 
-  public static String getNewDir(JFrame owner, JabRefPreferences prefs,
+  public static String getNewDir(JFrame owner,
                                  File directory, String extension,
                                  String description,
                                  int dialogType, boolean updateWorkingDirectory) {
-    return getNewFile(owner, prefs, directory, extension, description, dialogType,
+    return getNewFile(owner, directory, extension, description, dialogType,
                       updateWorkingDirectory, true);
   }
 
-  private static String getNewFile(JFrame owner, JabRefPreferences prefs,
+  private static String getNewFile(JFrame owner,
                                    File directory, String extension,
                                    String description,
                                    int dialogType,
@@ -425,76 +430,88 @@ public class Globals {
     else if (!extension.equals(NONE))
       off = new OpenFileFilter(extension);
 
-    return getNewFile(owner, prefs, directory, extension, description, off, dialogType, updateWorkingDirectory, dirOnly);
+    return (String)getNewFileImpl(owner, directory, extension, description, off,
+            dialogType, updateWorkingDirectory, dirOnly, false);
   }
 
-  private static String getNewFile(JFrame owner, JabRefPreferences prefs,
-                                   File directory, String extension,
-                                   String description,
-                                   OpenFileFilter off,
-                                   int dialogType,
-                                   boolean updateWorkingDirectory,
-                                   boolean dirOnly) {
+  private static Object getNewFileImpl(JFrame owner,
+                                       File directory, String extension,
+                                       String description,
+                                       OpenFileFilter off,
+                                       int dialogType,
+                                       boolean updateWorkingDirectory,
+                                       boolean dirOnly,
+                                       boolean multipleSelection) {
+
+      if (ON_MAC) {
+          return getNewFileForMac(owner, directory, extension, dialogType,
+                  updateWorkingDirectory, dirOnly, off);
+      }
 
-    if (ON_MAC) {
-      return getNewFileForMac(owner, directory, extension, dialogType,
-                              updateWorkingDirectory, dirOnly, off);
-    }
+      JFileChooser fc = null;
+      try {
+          fc = new JabRefFileChooser(directory);
+      } catch (InternalError errl) {
+          // This try/catch clause was added because a user reported an
+          // InternalError getting thrown on WinNT, presumably because of a
+          // bug in JGoodies Windows PLAF. This clause can be removed if the
+          // bug is fixed, but for now we just resort to the native file
+          // dialog, using the same method as is always used on Mac:
+          return getNewFileForMac(owner, directory, extension, dialogType,
+                  updateWorkingDirectory, dirOnly, off);
+      }
 
-    JFileChooser fc = null;
-    try {
-        fc = new JabRefFileChooser(directory);
-    } catch (InternalError errl) {
-        // This try/catch clause was added because a user reported an
-        // InternalError getting thrown on WinNT, presumably because of a
-        // bug in JGoodies Windows PLAF. This clause can be removed if the
-        // bug is fixed, but for now we just resort to the native file
-        // dialog, using the same method as is always used on Mac:
-        return getNewFileForMac(owner, directory, extension, dialogType,
-                                updateWorkingDirectory, dirOnly, off);
-    }
+      if (dirOnly) {
+          fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
 
-    if (dirOnly) {
-      fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+      }
 
-    }
-    fc.addChoosableFileFilter(off);
-    fc.setDialogType(dialogType);
-    int dialogResult = JFileChooser.CANCEL_OPTION ;
-    if (dialogType == JFileChooser.OPEN_DIALOG) {
-      dialogResult = fc.showOpenDialog(owner);
-    }
-    else if (dialogType == JFileChooser.SAVE_DIALOG){
-      dialogResult = fc.showSaveDialog(owner);
-    }
-    else {
-      dialogResult = fc.showDialog(owner, description);
-    }
+      fc.setMultiSelectionEnabled(multipleSelection);
+
+      fc.addChoosableFileFilter(off);
+      fc.setDialogType(dialogType);
+      int dialogResult = JFileChooser.CANCEL_OPTION;
+      if (dialogType == JFileChooser.OPEN_DIALOG) {
+          dialogResult = fc.showOpenDialog(owner);
+      } else if (dialogType == JFileChooser.SAVE_DIALOG) {
+          dialogResult = fc.showSaveDialog(owner);
+      } else {
+          dialogResult = fc.showDialog(owner, description);
+      }
 
-     // the getSelectedFile method returns a valid fileselection
-     // (if something is selected) indepentently from dialog return status
-    if (dialogResult != JFileChooser.APPROVE_OPTION)
-      return null ;
+      // the getSelectedFile method returns a valid fileselection
+      // (if something is selected) indepentently from dialog return status
+      if (dialogResult != JFileChooser.APPROVE_OPTION)
+          return null;
 
-    // okay button
-    File selectedFile = fc.getSelectedFile();
-    if (selectedFile == null) { // cancel
-      return null;
-    }
+      // okay button
+      File selectedFile = fc.getSelectedFile();
+      if (selectedFile == null) { // cancel
+          return null;
+      }
 
-    // If this is a save dialog, and the user has not chosen "All files" as filter
-    // we enforce the given extension. But only if extension is not null.
-    if ((extension != null) && (dialogType == JFileChooser.SAVE_DIALOG) && (fc.getFileFilter() == off) &&
-        !off.accept(selectedFile)) {
+      // If this is a save dialog, and the user has not chosen "All files" as filter
+      // we enforce the given extension. But only if extension is not null.
+      if ((extension != null) && (dialogType == JFileChooser.SAVE_DIALOG) && (fc.getFileFilter() == off) &&
+              !off.accept(selectedFile)) {
 
-      // add the first extension if there are multiple extensions
-      selectedFile = new File(selectedFile.getPath() + extension.split("[, ]+",0)[0]);
-    }
+          // add the first extension if there are multiple extensions
+          selectedFile = new File(selectedFile.getPath() + extension.split("[, ]+", 0)[0]);
+      }
 
-    if (updateWorkingDirectory) {
-      prefs.put("workingDirectory", selectedFile.getPath());
-    }
-    return selectedFile.getAbsolutePath();
+      if (updateWorkingDirectory) {
+          prefs.put("workingDirectory", selectedFile.getPath());
+      }
+
+      if (!multipleSelection)
+        return selectedFile.getAbsolutePath();
+      else {
+          File[] files = fc.getSelectedFiles();
+          String[] filenames = new String[files.length];
+          for (int i=0; i<files.length; i++)
+            filenames[i] = files[i].getAbsolutePath();
+          return filenames;
+      }
   }
 
   private static String getNewFileForMac(JFrame owner,
@@ -568,54 +585,255 @@ public class Globals {
 
 
 
-    HTMLCHARS.put("\"a", "&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;");
+//    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;");
@@ -841,7 +1059,7 @@ public class Globals {
     RTFCHARS.put("\"e", "\\'eb");
     RTFCHARS.put("\"i", "\\'ef");
     RTFCHARS.put("\"o", "\\'f6");
-    RTFCHARS.put("\"u", "\\'fc");
+    RTFCHARS.put("\"u", "\\uc0\\u252");
     RTFCHARS.put("~n", "\\'f1");
     RTFCHARS.put("`A", "\\'c0");
     RTFCHARS.put("`E", "\\'c8");
@@ -863,6 +1081,203 @@ public class Globals {
     RTFCHARS.put("\"I", "\\'cf");
     RTFCHARS.put("\"O", "\\'d6");
     RTFCHARS.put("\"U", "\\'dc");
+    // Use UNICODE characters for RTF-Chars which can not be found in the standard codepage
+
+    //  RTFCHARS.put("`A", "\\uc0\\u192");     // "Agrave" exists in standard codepage  
+      RTFCHARS.put("'A", "\\uc0\\u193");     // "Aacute"
+//  RTFCHARS.put("^A", "\\uc0\\u194");     // "Acirc"  exists in standard codepage
+      RTFCHARS.put("~A", "\\uc0\\u195");     // "Atilde"
+//  RTFCHARS.put("\"A", "\\uc0\\u196");    // "Auml"   exists in standard codepage
+      RTFCHARS.put("AA", "\\uc0\\u197");     // "Aring"
+      RTFCHARS.put("AE", "\\uc0\\u198");     // "AElig"
+      RTFCHARS.put("cC", "\\uc0\\u199");     // "Ccedil"
+//  RTFCHARS.put("`E", "\\uc0\\u200");     // "Egrave" exists in standard codepage
+      RTFCHARS.put("'E", "\\uc0\\u201");     // "Eacute"
+//  RTFCHARS.put("^E", "\\uc0\\u202");     // "Ecirc"  exists in standard codepage
+//  RTFCHARS.put("\"E", "\\uc0\\u203");    // "Euml"   exists in standard codepage
+//  RTFCHARS.put("`I", "\\uc0\\u204");     // "Igrave" exists in standard codepage
+      RTFCHARS.put("'I", "\\uc0\\u205");     // "Iacute"
+//  RTFCHARS.put("^I", "\\uc0\\u206");     // "Icirc"  exists in standard codepage
+//  RTFCHARS.put("\"I", "\\uc0\\u207");    // "Iuml"   exists in standard codepage
+      RTFCHARS.put("DH", "\\uc0\\u208");     // "ETH"
+      RTFCHARS.put("~N", "\\uc0\\u209");     // "Ntilde"
+//  RTFCHARS.put("`O", "\\uc0\\u210");     // "Ograve" exists in standard codepage
+      RTFCHARS.put("'O", "\\uc0\\u211");     // "Oacute"
+//  RTFCHARS.put("^O", "\\uc0\\u212");     // "Ocirc"  exists in standard codepage
+      RTFCHARS.put("~O", "\\uc0\\u213");     // "Otilde"
+//  RTFCHARS.put("\"O", "\\uc0\\u214");    // "Ouml"   exists in standard codepage
+      // According to ISO 8859-1 the "\times" symbol should be placed here (#215).
+      // Omitting this, because it is a mathematical symbol.
+      RTFCHARS.put("O", "\\uc0\\u216");      // "OSlash"
+//  RTFCHARS.put("`U", "\\uc0\\u217");     // "Ugrave"  exists in standard codepage
+      RTFCHARS.put("'U", "\\uc0\\u218");     // "Uacute"
+//  RTFCHARS.put("^U", "\\uc0\\u219");     // "Ucirc"   exists in standard codepage
+//  RTFCHARS.put("\"U", "\\uc0\\u220");    // "Uuml"    exists in standard codepage
+      RTFCHARS.put("'Y", "\\uc0\\u221");     // "Yacute"
+      RTFCHARS.put("TH", "\\uc0\\u222");     // "THORN"
+      RTFCHARS.put("ss", "\\uc0\\u223");     // "szlig"
+//  RTFCHARS.put("`a", "\\uc0\\u224");     // "agrave"  exists in standard codepage
+      RTFCHARS.put("'a", "\\uc0\\u225");     // "aacute"
+//  RTFCHARS.put("^a", "\\uc0\\u226");     // "acirc"   exists in standard codepage
+      RTFCHARS.put("~a", "\\uc0\\u227");     // "atilde"
+//  RTFCHARS.put("\"a", "\\uc0\\u228");    // "auml"    exists in standard codepage
+      RTFCHARS.put("aa", "\\uc0\\u229");     // "aring"
+      RTFCHARS.put("ae", "\\uc0\\u230");     // "aelig"
+      RTFCHARS.put("cc", "\\uc0\\u231");     // "ccedil"
+//  RTFCHARS.put("`e", "\\uc0\\u232");     // "egrave"  exists in standard codepage
+      RTFCHARS.put("'e", "\\uc0\\u233");     // "eacute"
+//  RTFCHARS.put("^e", "\\uc0\\u234");     // "ecirc"   exists in standard codepage
+//  RTFCHARS.put("\"e", "\\uc0\\u235");    // "euml"    exists in standard codepage
+//  RTFCHARS.put("`i", "\\uc0\\u236");     // "igrave"  exists in standard codepage
+      RTFCHARS.put("'i", "\\uc0\\u237");     // "iacute"
+//  RTFCHARS.put("^i", "\\uc0\\u238");     // "icirc"   exists in standard codepage
+//  RTFCHARS.put("\"i", "\\uc0\\u239");    // "iuml"    exists in standard codepage
+      RTFCHARS.put("dh", "\\uc0\\u240");     // "eth"
+//  RTFCHARS.put("~n", "\\uc0\\u241");     // "ntilde"  exists in standard codepage
+//  RTFCHARS.put("`o", "\\uc0\\u242");     // "ograve"  exists in standard codepage
+      RTFCHARS.put("'o", "\\uc0\\u243");     // "oacute"
+//  RTFCHARS.put("^o", "\\uc0\\u244");     // "ocirc"   exists in standard codepage
+      RTFCHARS.put("~o", "\\uc0\\u245");     // "otilde"
+//  RTFCHARS.put("\"o", "\\uc0\\u246");    // "ouml"    exists in standard codepage
+      // According to ISO 8859-1 the "\div" symbol should be placed here (#247).
+      // Omitting this, because it is a mathematical symbol.
+      RTFCHARS.put("o", "\\uc0\\u248");       // "oslash"
+//  RTFCHARS.put("`u", "\\uc0\\u249");      // "ugrave"  exists in standard codepage
+      RTFCHARS.put("'u", "\\uc0\\u250");      // "uacute"
+//  RTFCHARS.put("^u", "\\uc0\\u251");      // "ucirc"   exists in standard codepage
+//  RTFCHARS.put("\"u", "\\uc0\\u252");     // "uuml"    exists in standard codepage
+      RTFCHARS.put("'y", "\\uc0\\u253");      // "yacute"
+      RTFCHARS.put("th", "\\uc0\\u254");      // "thorn"
+      RTFCHARS.put("\"y", "\\uc0\\u255");     // "yuml"
+
+      RTFCHARS.put("=A", "\\uc0\\u256");      // "Amacr"
+      RTFCHARS.put("=a", "\\uc0\\u257");      // "amacr"
+      RTFCHARS.put("uA", "\\uc0\\u258");      // "Abreve"
+      RTFCHARS.put("ua", "\\uc0\\u259");      // "abreve"
+      RTFCHARS.put("kA", "\\uc0\\u260");      // "Aogon"
+      RTFCHARS.put("ka", "\\uc0\\u261");      // "aogon"
+      RTFCHARS.put("'C", "\\uc0\\u262");      // "Cacute"
+      RTFCHARS.put("'c", "\\uc0\\u263");      // "cacute"
+      RTFCHARS.put("^C", "\\uc0\\u264");      // "Ccirc"
+      RTFCHARS.put("^c", "\\uc0\\u265");      // "ccirc"
+      RTFCHARS.put(".C", "\\uc0\\u266");      // "Cdot"
+      RTFCHARS.put(".c", "\\uc0\\u267");      // "cdot"
+      RTFCHARS.put("vC", "\\uc0\\u268");      // "Ccaron"
+      RTFCHARS.put("vc", "\\uc0\\u269");      // "ccaron"
+      RTFCHARS.put("vD", "\\uc0\\u270");      // "Dcaron"
+      // Symbol #271 (d´) has no special Latex command
+      RTFCHARS.put("DJ", "\\uc0\\u272");      // "Dstrok"
+      RTFCHARS.put("dj", "\\uc0\\u273");      // "dstrok"
+      RTFCHARS.put("=E", "\\uc0\\u274");      // "Emacr"
+      RTFCHARS.put("=e", "\\uc0\\u275");      // "emacr"
+      RTFCHARS.put("uE", "\\uc0\\u276");      // "Ebreve"
+      RTFCHARS.put("ue", "\\uc0\\u277");      // "ebreve"
+      RTFCHARS.put(".E", "\\uc0\\u278");      // "Edot"
+      RTFCHARS.put(".e", "\\uc0\\u279");      // "edot"
+      RTFCHARS.put("kE", "\\uc0\\u280");      // "Eogon"
+      RTFCHARS.put("ke", "\\uc0\\u281");      // "eogon"
+      RTFCHARS.put("vE", "\\uc0\\u282");      // "Ecaron"
+      RTFCHARS.put("ve", "\\uc0\\u283");      // "ecaron"
+      RTFCHARS.put("^G", "\\uc0\\u284");      // "Gcirc"
+      RTFCHARS.put("^g", "\\uc0\\u285");      // "gcirc"
+      RTFCHARS.put("uG", "\\uc0\\u286");      // "Gbreve"
+      RTFCHARS.put("ug", "\\uc0\\u287");      // "gbreve"
+      RTFCHARS.put(".G", "\\uc0\\u288");      // "Gdot"
+      RTFCHARS.put(".g", "\\uc0\\u289");      // "gdot"
+      RTFCHARS.put("cG", "\\uc0\\u290");      // "Gcedil"
+      RTFCHARS.put("'g", "\\uc0\\u291");      // "gacute"
+      RTFCHARS.put("^H", "\\uc0\\u292");      // "Hcirc"
+      RTFCHARS.put("^h", "\\uc0\\u293");      // "hcirc"
+      RTFCHARS.put("Hstrok", "\\uc0\\u294");  // "Hstrok"
+      RTFCHARS.put("hstrok", "\\uc0\\u295");  // "hstrok"
+      RTFCHARS.put("~I", "\\uc0\\u296");      // "Itilde"
+      RTFCHARS.put("~i", "\\uc0\\u297");      // "itilde"
+      RTFCHARS.put("=I", "\\uc0\\u298");      // "Imacr"
+      RTFCHARS.put("=i", "\\uc0\\u299");      // "imacr"
+      RTFCHARS.put("uI", "\\uc0\\u300");      // "Ibreve"
+      RTFCHARS.put("ui", "\\uc0\\u301");      // "ibreve"
+      RTFCHARS.put("kI", "\\uc0\\u302");      // "Iogon"
+      RTFCHARS.put("ki", "\\uc0\\u303");      // "iogon"
+      RTFCHARS.put(".I", "\\uc0\\u304");      // "Idot"
+      RTFCHARS.put("i", "\\uc0\\u305");       // "inodot"
+      // Symbol #306 (IJ) has no special Latex command
+      // Symbol #307 (ij) has no special Latex command
+      RTFCHARS.put("^J", "\\uc0\\u308");      // "Jcirc"
+      RTFCHARS.put("^j", "\\uc0\\u309");      // "jcirc"
+      RTFCHARS.put("cK", "\\uc0\\u310");      // "Kcedil"
+      RTFCHARS.put("ck", "\\uc0\\u311");      // "kcedil"
+      // Symbol #312 (k) has no special Latex command
+      RTFCHARS.put("'L", "\\uc0\\u313");      // "Lacute"
+      RTFCHARS.put("'l", "\\uc0\\u314");      // "lacute"
+      RTFCHARS.put("cL", "\\uc0\\u315");      // "Lcedil"
+      RTFCHARS.put("cl", "\\uc0\\u316");      // "lcedil"
+      // Symbol #317 (L´) has no special Latex command
+      // Symbol #318 (l´) has no special Latex command
+      RTFCHARS.put("Lmidot", "\\uc0\\u319");  // "Lmidot"
+      RTFCHARS.put("lmidot", "\\uc0\\u320");  // "lmidot"
+      RTFCHARS.put("L", "\\uc0\\u321");      // "Lstrok"
+      RTFCHARS.put("l", "\\uc0\\u322");      // "lstrok"
+      RTFCHARS.put("'N", "\\uc0\\u323");      // "Nacute"
+      RTFCHARS.put("'n", "\\uc0\\u324");      // "nacute"
+      RTFCHARS.put("cN", "\\uc0\\u325");      // "Ncedil"
+      RTFCHARS.put("cn", "\\uc0\\u326");      // "ncedil"
+      RTFCHARS.put("vN", "\\uc0\\u327");      // "Ncaron"
+      RTFCHARS.put("vn", "\\uc0\\u328");      // "ncaron"
+      // Symbol #329 (´n) has no special Latex command
+      RTFCHARS.put("NG", "\\uc0\\u330");      // "ENG"
+      RTFCHARS.put("ng", "\\uc0\\u331");      // "eng"
+      RTFCHARS.put("=O", "\\uc0\\u332");      // "Omacr"
+      RTFCHARS.put("=o", "\\uc0\\u333");      // "omacr"
+      RTFCHARS.put("uO", "\\uc0\\u334");      // "Obreve"
+      RTFCHARS.put("uo", "\\uc0\\u335");      // "obreve"
+      RTFCHARS.put("HO", "\\uc0\\u336");      // "Odblac"
+      RTFCHARS.put("Ho", "\\uc0\\u337");      // "odblac"
+      RTFCHARS.put("OE", "\\uc0\\u338");      // "OElig"
+      RTFCHARS.put("oe", "\\uc0\\u339");      // "oelig"
+      RTFCHARS.put("'R", "\\uc0\\u340");      // "Racute"
+      RTFCHARS.put("'r", "\\uc0\\u341");      // "racute"
+      RTFCHARS.put("cR", "\\uc0\\u342");      // "Rcedil"
+      RTFCHARS.put("cr", "\\uc0\\u343");      // "rcedil"
+      RTFCHARS.put("vR", "\\uc0\\u344");      // "Rcaron"
+      RTFCHARS.put("vr", "\\uc0\\u345");      // "rcaron"
+      RTFCHARS.put("'S", "\\uc0\\u346");      // "Sacute"
+      RTFCHARS.put("'s", "\\uc0\\u347");      // "sacute"
+      RTFCHARS.put("^S", "\\uc0\\u348");      // "Scirc"
+      RTFCHARS.put("^s", "\\uc0\\u349");      // "scirc"
+      RTFCHARS.put("cS", "\\uc0\\u350");      // "Scedil"
+      RTFCHARS.put("cs", "\\uc0\\u351");      // "scedil"
+      RTFCHARS.put("vS", "\\uc0\\u352");      // "Scaron"
+      RTFCHARS.put("vs", "\\uc0\\u353");      // "scaron"
+      RTFCHARS.put("cT", "\\uc0\\u354");      // "Tcedil"
+      RTFCHARS.put("ct", "\\uc0\\u355");      // "tcedil"
+      RTFCHARS.put("vT", "\\uc0\\u356");      // "Tcaron"
+      // Symbol #357 (t´) has no special Latex command
+      RTFCHARS.put("Tstrok", "\\uc0\\u358");  // "Tstrok"
+      RTFCHARS.put("tstrok", "\\uc0\\u359");  // "tstrok"
+      RTFCHARS.put("~U", "\\uc0\\u360");      // "Utilde"
+      RTFCHARS.put("~u", "\\uc0\\u361");      // "utilde"
+      RTFCHARS.put("=U", "\\uc0\\u362");      // "Umacr"
+      RTFCHARS.put("=u", "\\uc0\\u363");      // "umacr"
+      RTFCHARS.put("uU", "\\uc0\\u364");      // "Ubreve"
+      RTFCHARS.put("uu", "\\uc0\\u365");      // "ubreve"
+      RTFCHARS.put("rU", "\\uc0\\u366");      // "Uring"
+      RTFCHARS.put("ru", "\\uc0\\u367");      // "uring"
+      RTFCHARS.put("HU", "\\uc0\\u368");      // "Odblac"
+      RTFCHARS.put("Hu", "\\uc0\\u369");      // "odblac"
+      RTFCHARS.put("kU", "\\uc0\\u370");      // "Uogon"
+      RTFCHARS.put("ku", "\\uc0\\u371");      // "uogon"
+      RTFCHARS.put("^W", "\\uc0\\u372");      // "Wcirc"
+      RTFCHARS.put("^w", "\\uc0\\u373");      // "wcirc"
+      RTFCHARS.put("^Y", "\\uc0\\u374");      // "Ycirc"
+      RTFCHARS.put("^y", "\\uc0\\u375");      // "ycirc"
+      RTFCHARS.put("\"Y", "\\uc0\\u376");     // "Yuml"
+      RTFCHARS.put("'Z", "\\uc0\\u377");      // "Zacute"
+      RTFCHARS.put("'z", "\\uc0\\u378");      // "zacute"
+      RTFCHARS.put(".Z", "\\uc0\\u379");      // "Zdot"
+      RTFCHARS.put(".z", "\\uc0\\u380");      // "zdot"
+      RTFCHARS.put("vZ", "\\uc0\\u381");      // "Zcaron"
+      RTFCHARS.put("vz", "\\uc0\\u382");      // "zcaron"
+      // Symbol #383 (f) has no special Latex command
 
     //XML_CHARS.put("\\u00E1", "&#x00E1;");
   }
index 0e46812..76aca03 100644 (file)
@@ -42,7 +42,7 @@ import javax.swing.*;
 
 import com.jgoodies.looks.plastic.Plastic3DLookAndFeel;
 import com.jgoodies.looks.windows.WindowsLookAndFeel;
-import com.jgoodies.looks.FontPolicy;
+
 
 //import javax.swing.UIManager;
 //import javax.swing.UIDefaults;
@@ -550,11 +550,10 @@ public class JabRef {
 
                 // Set font sizes if we are using a JGoodies look and feel.
                 /*if ((lnf != null) && (lnf instanceof Plastic3DLookAndFeel)) {
-
                     //MetalLookAndFeel.setCurrentTheme(new
                     // com.jgoodies.plaf.plastic.theme.SkyBluer());
                     Plastic3DLookAndFeel plLnf = (Plastic3DLookAndFeel) lnf;
-                    Plastic3DLookAndFeel.setFontPolicy();
+                    //Plastic3DLookAndFeel.setFontPolicy();
                     //Plastic3DLookAndFeel.setFontPolicy(FontPolicy.);
                     //plLnf.setFontSizeHints(new FontSizeHints(fontSizes, fontSizes,
                     //        fontSizes, fontSizes));
index 7b3689f..ba1678f 100644 (file)
@@ -324,14 +324,14 @@ public class JabRefFrame
     public GroupSelector groupSelector;
 
   // The menus for importing/appending other formats
-  JMenu importMenu = subMenu("Import and append"),
-      importNewMenu = subMenu("Import"),
+  JMenu importMenu = subMenu("Import into current database"),
+      importNewMenu = subMenu("Import into new database"),
       exportMenu = subMenu("Export"),
       customExportMenu = subMenu("Custom export"),
       newDatabaseMenu = subMenu("New database" );
 
   // Other submenus
-  JMenu checkAndFix = subMenu("Find And Fix") ;
+  JMenu checkAndFix = subMenu("Scan database...");
 
 
   // The action for adding a new entry of unspecified type.
@@ -1020,7 +1020,7 @@ public JabRefPreferences prefs() {
     //=====================================
     file.add(quit);
     mb.add(file);
-    edit.add(test);
+    //edit.add(test);
     edit.add(undo);
     edit.add(redo);
     edit.addSeparator();
@@ -1069,19 +1069,24 @@ public JabRefPreferences prefs() {
     tools.add(incrementalSearch);
     tools.add(replaceAll);
 
-    // [kiar] I think we should group these festures
-    tools.add(checkAndFix) ;
-     checkAndFix.add( dupliCheck);
-     checkAndFix.add( strictDupliCheck);
-     checkAndFix.add( makeKeyAction);
-     checkAndFix.add( integrityCheckAction) ;
+    tools.add( makeKeyAction);
+
+     // [kiar] I think we should group these festures
+     tools.add(checkAndFix) ;
+     checkAndFix.add(dupliCheck);
+     checkAndFix.add(strictDupliCheck);
+     checkAndFix.add(autoSetPdf);
+     checkAndFix.add(autoSetPs);
+     checkAndFix.add(integrityCheckAction) ;
+
+
 
     tools.addSeparator();
     tools.add(manageSelectors);
     tools.add(emacsPushAction);
     tools.add(lyxPushAction);
     tools.add(winEdtPushAction);
-    tools.add(latexEditorPushAction);
+    //tools.add(latexEditorPushAction);
     //tools.add(fetchAuthorMedline);
     tools.addSeparator();
     tools.add(openFile);
@@ -1090,8 +1095,6 @@ public JabRefPreferences prefs() {
     tools.add(newSubDatabaseAction);
 
       tools.addSeparator();
-      tools.add(autoSetPdf);
-      tools.add(autoSetPs);
       tools.add(abbreviateIso);
       tools.add(abbreviateMedline);
       tools.add(unabbreviate);
@@ -2113,7 +2116,7 @@ class FetchCiteSeerAction
       importMenu.removeAll();
 
       // Add a menu item for autodetecting import format:
-      importMenu.add(new ImportUnknownMenuItem(ths, intoNew));
+      importMenu.add(new ImportMenuItem(ths, intoNew));
 
       // Add custom importers
       importMenu.addSeparator();
@@ -2128,7 +2131,7 @@ class FetchCiteSeerAction
         // Put in all formatters registered in ImportFormatReader:
         for (Iterator i=customImporters.iterator(); i.hasNext();) {
             ImportFormat imFo = (ImportFormat)i.next();
-            submenu.add(new ImportMenuItem(ths, imFo, intoNew));
+            submenu.add(new ImportMenuItem(ths, intoNew, imFo));
         }
       }
 
@@ -2138,42 +2141,11 @@ class FetchCiteSeerAction
       // Put in all formatters registered in ImportFormatReader:
       for (Iterator i=Globals.importFormatReader.getBuiltInInputFormats().iterator(); i.hasNext();) {
           ImportFormat imFo = (ImportFormat)i.next();
-          importMenu.add(new ImportMenuItem(ths, imFo, intoNew));
+          importMenu.add(new ImportMenuItem(ths, intoNew, imFo));
       }
   }
 
 
-  //
-  // simply opens up a jfilechooser dialog and gets a filename
-  // returns null if user selects cancel
-  // it should also do a check perhaps to see if
-  // file exists and is readable?
-  //
-
-  public String getNewFile() {
-
-    return Globals.getNewFile(ths, prefs, new File(prefs.get("workingDirectory")),
-                              null, JFileChooser.OPEN_DIALOG, false);
-
-    /*JFileChooser fc;
-    if (prefs.get("workingDirectory") == null) {
-      fc = new JabRefFileChooser(new File(System.getProperty("user.home"))); //cwd));
-    }
-    else {
-      fc = new JabRefFileChooser(new File(prefs.get("workingDirectory"))); //cwd));
-    }
-
-    fc.addChoosableFileFilter(new OpenFileFilter());
-    fc.setDialogType(JFileChooser.OPEN_DIALOG);
-    fc.showOpenDialog(null);
-    File selectedFile = fc.getSelectedFile();
-    if (selectedFile == null) { // cancel
-      return null;
-    }
-    prefs.put("workingDirectory", selectedFile.getPath());
-    return selectedFile.getAbsolutePath();*/
-  }
-
     public FileHistory getFileHistory() {
         return fileHistory;
     }
@@ -2232,7 +2204,7 @@ class FetchCiteSeerAction
               //    must provide a Reader for the layout definition.
               // 2. The preferred extension for the layout format.
               // 3. The name of the file to use.
-              final String chosenFile = Globals.getNewFile(ths, prefs, new File(prefs.get("workingDirectory")),
+              final String chosenFile = Globals.getNewFile(ths, new File(prefs.get("workingDirectory")),
                       extension, JFileChooser.SAVE_DIALOG, false);
               final String exportName = lfFileName;
               if (chosenFile == null)
@@ -2405,8 +2377,8 @@ class SaveSessionAction
       // 2. The preferred extension for the layout format.
       // 3. The name of the file to use.
       File outFile;
-      String chosenFile = Globals.getNewFile(ths, prefs,
-                                             new File(prefs.get("workingDirectory")),
+      String chosenFile = Globals.getNewFile(ths,
+              new File(prefs.get("workingDirectory")),
                                              extension,
                                              JFileChooser.SAVE_DIALOG, false);
 
@@ -2570,7 +2542,7 @@ class SaveSessionAction
             putValue(NAME, "Tab-separated file");
         }
         public void actionPerformed(ActionEvent e) {
-            String chosenFile = Globals.getNewFile(ths, prefs, new File(prefs.get("workingDirectory")), ".csv",
+            String chosenFile = Globals.getNewFile(ths, new File(prefs.get("workingDirectory")), ".csv",
                                                    JFileChooser.SAVE_DIALOG, true);
             if (chosenFile == null)
                 return;
index 1a0f58a..6e5199a 100644 (file)
@@ -297,8 +297,9 @@ public class JabRefPreferences {
 
         defaults.put("personalJournalList", null);
         defaults.put("externalJournalLists", null);
-
         defaults.put("citeCommand", "cite");
+        defaults.put("floatMarkedEntries", Boolean.TRUE);
+        
         //defaults.put("tempDir", System.getProperty("java.io.tmpdir"));
         //Util.pr(System.getProperty("java.io.tempdir"));
 
index 99d3fd2..0d56060 100644 (file)
@@ -19,7 +19,7 @@ public class MergeDialog extends JDialog {
   JPanel jPanel2 = new JPanel();
   JButton ok = new JButton();
   JButton Cancel = new JButton();
-  TitledBorder titledBorder1;
+  //TitledBorder titledBorder1;
   JCheckBox entries = new JCheckBox();
   JCheckBox strings = new JCheckBox();
   GridBagLayout gridBagLayout1 = new GridBagLayout();
@@ -28,7 +28,11 @@ public class MergeDialog extends JDialog {
 
   boolean okPressed = false;
 
-  public MergeDialog(JabRefFrame frame, String title, boolean modal) {
+    public boolean isOkPressed() {
+        return okPressed;
+    }
+
+    public MergeDialog(JabRefFrame frame, String title, boolean modal) {
     super(frame, title, modal);
     try {
       jbInit(frame);
@@ -44,13 +48,13 @@ public class MergeDialog extends JDialog {
   }
 
   private void jbInit(JabRefFrame parent) {
-      titledBorder1 = new TitledBorder(BorderFactory.createLineBorder(new Color(153, 153, 153),2),Globals.lang("Options"));
+    //  titledBorder1 = new TitledBorder(BorderFactory.createLineBorder(new Color(153, 153, 153),2),Globals.lang("Options"));
     panel1.setLayout(borderLayout1);
     ok.setText(Globals.lang("Ok"));
     ok.addActionListener(new MergeDialog_ok_actionAdapter(this));
     Cancel.setText(Globals.lang("Cancel"));
     Cancel.addActionListener(new MergeDialog_Cancel_actionAdapter(this));
-    jPanel1.setBorder(titledBorder1);
+    jPanel1.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
     jPanel1.setLayout(gridBagLayout1);
     entries.setToolTipText("");
     entries.setSelected(true);
@@ -61,7 +65,6 @@ public class MergeDialog extends JDialog {
     selector.setText(Globals.lang("Import word selector definitions"));
     this.setModal(true);
     this.setResizable(false);
-    this.setTitle("Import database");
     getContentPane().add(panel1);
     panel1.add(jPanel2, BorderLayout.SOUTH);
     jPanel2.add(ok, null);
index f9950b6..785586d 100644 (file)
@@ -180,7 +180,7 @@ public class PrefsDialog3 extends JDialog {
     exportPrefs.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
             String filename = Globals.getNewFile
-            (frame, _prefs, new File(System.getProperty("user.home")),
+            (frame, new File(System.getProperty("user.home")),
              ".xml", JFileChooser.SAVE_DIALOG, false);
             if (filename == null)
             return;
@@ -206,7 +206,7 @@ public class PrefsDialog3 extends JDialog {
     importPrefs.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
             String filename = Globals.getNewFile
-            (frame, _prefs, new File(System.getProperty("user.home")),
+            (frame, new File(System.getProperty("user.home")),
              ".xml", JFileChooser.OPEN_DIALOG, false);
             if (filename == null)
             return;
index 7f2e8a8..fdfcced 100644 (file)
@@ -46,6 +46,9 @@ public class RightClickMenu extends JPopupMenu
         groupRemoveMenu = new JMenu(Globals.lang("Remove from group")),
         groupMoveMenu = new JMenu("Assign exclusively to group"), // JZTODO lyrics
         typeMenu = new JMenu(Globals.lang("Change entry type"));
+    JCheckBoxMenuItem
+        floatMarked = new JCheckBoxMenuItem(Globals.lang("Float marked entries"),
+            Globals.prefs.getBoolean("floatMarkedEntries"));
 
     public RightClickMenu(BasePanel panel_, MetaData metaData_) {
         panel = panel_;
@@ -187,6 +190,13 @@ public class RightClickMenu extends JPopupMenu
                 }
             });
         addSeparator(); // for "add/move/remove to/from group" entries (appended here)
+
+        floatMarked.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                Globals.prefs.putBoolean("floatMarkedEntries", floatMarked.isSelected());
+                panel.mainTable.refreshSorting(); // Bad remote access
+            }
+        });
     }
 
     /**
@@ -235,6 +245,10 @@ public class RightClickMenu extends JPopupMenu
       insertNodes(groupAddMenu,metaData.getGroups(),bes,true,false);
       insertNodes(groupMoveMenu,metaData.getGroups(),bes,true,true);
       insertNodes(groupRemoveMenu,metaData.getGroups(),bes,false,false);
+
+        addSeparator();
+        floatMarked.setSelected(Globals.prefs.getBoolean("floatMarkedEntries"));
+        add(floatMarked);
     }
 
     /**
diff --git a/src/java/net/sf/jabref/SplashScreen.java~ b/src/java/net/sf/jabref/SplashScreen.java~
deleted file mode 100644 (file)
index af7fc4b..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-package net.sf.jabref;
-
-//import javax.swing.*;
-import java.awt.*;
-import java.awt.event.*;
-import java.net.URL;
-
-/**
- * <p>Title: </p>
- * <p>Description: </p>
- * <p>Copyright: Copyright (c) 2003</p>
- * <p>Company: </p>
- * @author not attributable
- * @version 1.0
- */
-
-public class SplashScreen extends Window {
-    private Image splashImage;
-    private boolean paintCalled = false;
-    
-    public SplashScreen(Frame owner) {
-        super(owner);
-        URL imageURL = SplashScreen.class.getResource("/images/jabref-2.0-splash.png");
-        splashImage = Toolkit.getDefaultToolkit().createImage(imageURL);
-
-        // Load the image
-        MediaTracker mt = new MediaTracker(this);
-        mt.addImage(splashImage,0);
-        try {
-            mt.waitForID(0);
-        } catch(InterruptedException ie) {}
-
-                                                                                
-        // Center the window on the screen.
-        int imgWidth = splashImage.getWidth(this);
-        int imgHeight = splashImage.getHeight(this);  
-
-        setSize(imgWidth, imgHeight);
-        Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize();
-        setLocation(
-            (screenDim.width - imgWidth) / 2,
-            (screenDim.height - imgHeight) / 2
-        );
-
-    }
-    
-    
-    /**
-     * Updates the display area of the window.
-     */
-    public void update(Graphics g) {
-        // Note: Since the paint method is going to draw an
-        // image that covers the complete area of the component we
-        // do not fill the component with its background color
-        // here. This avoids flickering.
-
-        g.setColor(getForeground());
-        paint(g);
-    }
-    /**
-     * Paints the image on the window.
-     */
-
-    public void paint(Graphics g) {
-        g.drawImage(splashImage, 0, 0, this);
-
-        // Notify method splash that the window
-        // has been painted.
-        if (! paintCalled) {
-            paintCalled = true;
-            synchronized (this) { notifyAll(); }
-        }
-    }
-    
-      /**
-     * Constructs and displays a SplashWindow.<p>
-     * This method is useful for startup splashs.
-     * Dispose the returned frame to get rid of the splash window.<p>
-     *
-     * @param splashImage The image to be displayed.
-     * @return Returns the frame that owns the SplashWindow.
-     */
-
-    public static Frame splash() {
-        Frame f = new Frame();
-        SplashScreen w = new SplashScreen(f);
-
-        // Show the window.
-        w.setVisible(true);
-        w.toFront();
-
-        // Note: To make sure the user gets a chance to see the
-        // splash window we wait until its paint method has been
-        // called at least once by the AWT event dispatcher thread.
-
-        // sebwills adds: However, just in case the paint method never gets called
-        // (e.g. if the splashscreen is completely obscured by an 'always on top'
-        // window of some other application), we time-out after 5 seconds.
-        if (! EventQueue.isDispatchThread()) {
-            synchronized (w) {
-                if (! w.paintCalled) {
-                    try { 
-                        w.wait(5000);
-                    } catch (InterruptedException e) {}
-                }
-            }
-        }
-        return f;
-    }
-}
index a9e8db0..d96b1ef 100644 (file)
@@ -15,7 +15,7 @@ import net.sf.jabref.gui.ColorSetupPanel;
 class TablePrefsTab extends JPanel implements PrefsTab {
 
     JabRefPreferences _prefs;
-    private JCheckBox autoResizeMode, priDesc, secDesc, terDesc,
+    private JCheckBox autoResizeMode, priDesc, secDesc, terDesc, floatMarked,
     pdfColumn, urlColumn, citeseerColumn;
     private JRadioButton namesAsIs, namesFf, namesFl, namesNatbib, abbrNames, noAbbrNames, lastNamesOnly;
     private JComboBox
@@ -52,6 +52,8 @@ class TablePrefsTab extends JPanel implements PrefsTab {
         urlColumn = new JCheckBox(Globals.lang("Show URL/DOI column"));
         citeseerColumn = new JCheckBox(Globals.lang("Show CiteSeer column"));
 
+        floatMarked = new JCheckBox(Globals.lang("Float marked entries"));
+
         priField = new JTextField(10);
         secField = new JTextField(10);
         terField = new JTextField(10);
@@ -148,6 +150,9 @@ class TablePrefsTab extends JPanel implements PrefsTab {
     builder.append(pan);
     builder.append(builder2.getPanel());
     builder.nextLine();
+    builder.append(pan);
+    builder.append(floatMarked);
+    builder.nextLine();
     builder.appendSeparator(Globals.lang("General"));
     builder.append(pan); builder.append(autoResizeMode); builder.nextLine();
 
@@ -196,6 +201,8 @@ class TablePrefsTab extends JPanel implements PrefsTab {
     secDesc.setSelected(_prefs.getBoolean("secDescending"));
     terDesc.setSelected(_prefs.getBoolean("terDescending"));
 
+        floatMarked.setSelected(_prefs.getBoolean("floatMarkedEntries"));
+
         abbrNames.setEnabled(!namesNatbib.isSelected());
         lastNamesOnly.setEnabled(!namesNatbib.isSelected());
         noAbbrNames.setEnabled(!namesNatbib.isSelected());
@@ -229,6 +236,8 @@ class TablePrefsTab extends JPanel implements PrefsTab {
         _prefs.put("priSort", priField.getText().toLowerCase().trim());
         _prefs.put("secSort", secField.getText().toLowerCase().trim());
         _prefs.put("terSort", terField.getText().toLowerCase().trim());
+
+        _prefs.putBoolean("floatMarkedEntries", floatMarked.isSelected());
     // updatefont
     }
 
index a54f8bd..badec9f 100644 (file)
@@ -34,7 +34,6 @@ import java.io.File;
 import net.sf.jabref.JabRefFrame;
 import net.sf.jabref.Util;
 import net.sf.jabref.Globals;
-import net.sf.jabref.GUIGlobals;
 
 /**
  * Dialog for creating or modifying custom exports.
@@ -42,20 +41,20 @@ import net.sf.jabref.GUIGlobals;
 class CustomExportDialog extends JDialog {
 
     JTextField
-       name = new JTextField(60),
-       layoutFile = new JTextField(60),
-       extension = new JTextField(60);
+    name = new JTextField(60),
+    layoutFile = new JTextField(60),
+    extension = new JTextField(60);
     JLabel
-       nl = new JLabel(Globals.lang("Export name")+":"),
-       nr = new JLabel(Globals.lang("Main layout file")+":"),
-       nf = new JLabel(Globals.lang("File extension")+":");
+    nl = new JLabel(Globals.lang("Export name")+":"),
+    nr = new JLabel(Globals.lang("Main layout file")+":"),
+    nf = new JLabel(Globals.lang("File extension")+":");
     JButton
         ok = new JButton(Globals.lang("Ok")),
         cancel = new JButton(Globals.lang("Cancel")),
         browse = new JButton(Globals.lang("Browse"));
     JPanel
-       main = new JPanel(),
-       opt = new JPanel();
+    main = new JPanel(),
+    opt = new JPanel();
     private boolean ok_pressed = false;
     private Vector groups;
     private int index;
@@ -76,69 +75,69 @@ class CustomExportDialog extends JDialog {
 
 
     public CustomExportDialog(JabRefFrame parent_) {
-       super(parent_, Globals.lang("Edit custom export"), true);
-       parent = parent_;
-       //groups = groups_;
-       //index = index_;
-       /*if (index >= 0) {
-           // Group entry already exists.
-           try {
-               oldField = (String)groups.elementAt(index);
-               field.setText(oldField);
-               oldName = (String)groups.elementAt(index+1);
-               name.setText(oldName);
-               oldRegexp = (String)groups.elementAt(index+2);
-               regexp.setText(oldRegexp);
-
-               // We disable these text fields, since changing field
-               // or regexp would leave the entries added to the
-               // group hanging.
-               field.setEnabled(false);
-               regexp.setEnabled(false);
-           } catch (ArrayIndexOutOfBoundsException ex) {
-           }
-       } else
-           field.setText(defaultField);
-*/
-       ActionListener okListener = new ActionListener() {
-               public void actionPerformed(ActionEvent e) {
-
-                   // Check that there are no empty strings.
-                   if ((layoutFile.getText().equals("")) ||
-                       (name.getText().equals("")) ||
-                       (extension.getText().equals("")) ||
+    super(parent_, Globals.lang("Edit custom export"), true);
+    parent = parent_;
+    //groups = groups_;
+    //index = index_;
+    /*if (index >= 0) {
+            // Group entry already exists.
+            try {
+            oldField = (String)groups.elementAt(index);
+            field.setText(oldField);
+            oldName = (String)groups.elementAt(index+1);
+            name.setText(oldName);
+            oldRegexp = (String)groups.elementAt(index+2);
+            regexp.setText(oldRegexp);
+
+            // We disable these text fields, since changing field
+            // or regexp would leave the entries added to the
+            // group hanging.
+            field.setEnabled(false);
+            regexp.setEnabled(false);
+            } catch (ArrayIndexOutOfBoundsException ex) {
+            }
+        } else
+            field.setText(defaultField);
+    */
+    ActionListener okListener = new ActionListener() {
+        public void actionPerformed(ActionEvent e) {
+
+            // Check that there are no empty strings.
+            if ((layoutFile.getText().equals("")) ||
+            (name.getText().equals("")) ||
+            (extension.getText().equals("")) ||
                         (!layoutFile.getText().endsWith(".layout"))) {
-                       //JOptionPane.showMessageDialog
-                       //    (parent, Globals.lang("You must provide a name, a search "
-                       //                        +"string and a field name for this group."),
-                       //                        Globals.lang("Create group"),
-                       //     JOptionPane.ERROR_MESSAGE);
-                       return;
-                   }
-
-                   // Handling of : and ; must also be done.
-
-                   ok_pressed = true;
-                   dispose();
-               }
-           };
-       ok.addActionListener(okListener);
-       name.addActionListener(okListener);
-       layoutFile.addActionListener(okListener);
-       extension.addActionListener(okListener);
-
-       AbstractAction cancelAction = new AbstractAction() {
+            //JOptionPane.showMessageDialog
+            //    (parent, Globals.lang("You must provide a name, a search "
+            //                   +"string and a field name for this group."),
+            //                   Globals.lang("Create group"),
+            //     JOptionPane.ERROR_MESSAGE);
+            return;
+            }
+
+            // Handling of : and ; must also be done.
+
+            ok_pressed = true;
+            dispose();
+        }
+        };
+    ok.addActionListener(okListener);
+    name.addActionListener(okListener);
+    layoutFile.addActionListener(okListener);
+    extension.addActionListener(okListener);
+
+    AbstractAction cancelAction = new AbstractAction() {
           public void actionPerformed(ActionEvent e) {
               dispose();
-               }
-           };
+        }
+        };
 
-       cancel.addActionListener(cancelAction);
+    cancel.addActionListener(cancelAction);
 
         browse.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
             File directory = new File(Globals.prefs.get("exportWorkingDirectory"));
-            String chosenStr = Globals.getNewFile(parent, Globals.prefs, directory, ".layout",
+            String chosenStr = Globals.getNewFile(parent, directory, ".layout",
                                              JFileChooser.OPEN_DIALOG, false);
             if (chosenStr == null) return;
             File chosen = new File(chosenStr);
@@ -154,45 +153,45 @@ class CustomExportDialog extends JDialog {
         ActionMap am = main.getActionMap();
         InputMap im = main.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
         im.put(parent.prefs().getKey("Close dialog"), "close");
-       am.put("close", cancelAction);
-
-
-       // Layout starts here.
-       main.setLayout(gbl);
-       //opt.setLayout(gbl);
-       main.setBorder(BorderFactory.createTitledBorder
-                      (BorderFactory.createEtchedBorder(),
-                       Globals.lang("Export properties")));
-
-       // Main panel:
-       con.weightx = 0;
-       con.gridwidth = 1;
-       con.insets = new Insets(3, 5, 3, 5);
-       con.anchor = GridBagConstraints.EAST;
-       con.fill = GridBagConstraints.NONE;
-       con.gridx = 0;
-       con.gridy = 0;
-       gbl.setConstraints(nl, con);
-       main.add(nl);
-       con.gridy = 1;
-       gbl.setConstraints(nr, con);
-       main.add(nr);
-       con.gridy = 2;
-       gbl.setConstraints(nf, con);
-       main.add(nf);
+    am.put("close", cancelAction);
+
+
+    // Layout starts here.
+    main.setLayout(gbl);
+    //opt.setLayout(gbl);
+    main.setBorder(BorderFactory.createTitledBorder
+               (BorderFactory.createEtchedBorder(),
+            Globals.lang("Export properties")));
+
+    // Main panel:
+    con.weightx = 0;
+    con.gridwidth = 1;
+    con.insets = new Insets(3, 5, 3, 5);
+    con.anchor = GridBagConstraints.EAST;
+    con.fill = GridBagConstraints.NONE;
+    con.gridx = 0;
+    con.gridy = 0;
+    gbl.setConstraints(nl, con);
+    main.add(nl);
+    con.gridy = 1;
+    gbl.setConstraints(nr, con);
+    main.add(nr);
+    con.gridy = 2;
+    gbl.setConstraints(nf, con);
+    main.add(nf);
 
         con.gridwidth = 2;
         con.weightx = 1;
-       con.anchor = GridBagConstraints.WEST;
-       con.fill = GridBagConstraints.HORIZONTAL;
-       con.gridy = 0;
-       con.gridx = 1;
-       gbl.setConstraints(name, con);
-       main.add(name);
-       con.gridy = 1;
+    con.anchor = GridBagConstraints.WEST;
+    con.fill = GridBagConstraints.HORIZONTAL;
+    con.gridy = 0;
+    con.gridx = 1;
+    gbl.setConstraints(name, con);
+    main.add(name);
+    con.gridy = 1;
         con.gridwidth = 1;
         gbl.setConstraints(layoutFile, con);
-       main.add(layoutFile);
+    main.add(layoutFile);
         con.gridx = 2;
         con.weightx = 0;
         gbl.setConstraints(browse, con);
@@ -200,35 +199,35 @@ class CustomExportDialog extends JDialog {
         con.weightx = 1;
         con.gridwidth = 2;
         con.gridx = 1;
-       con.gridy = 2;
-       gbl.setConstraints(extension, con);
-       main.add(extension);
-
-               // Option buttons:
-       con.gridx = GridBagConstraints.RELATIVE;
-       con.gridy = GridBagConstraints.RELATIVE;
-       con.weightx = 1;
-       con.gridwidth = 1;
-       con.anchor = GridBagConstraints.EAST;
-       con.fill = GridBagConstraints.NONE;
-       //gbl.setConstraints(ok, con);
-       opt.add(ok);
-       con.anchor = GridBagConstraints.WEST;
-       con.gridwidth = GridBagConstraints.REMAINDER;
-       //gbl.setConstraints(cancel, con);
-       opt.add(cancel);
-
-       getContentPane().add(main, BorderLayout.CENTER);
-       getContentPane().add(opt, BorderLayout.SOUTH);
-
-       //pack();
-       setSize(600, 170);
+    con.gridy = 2;
+    gbl.setConstraints(extension, con);
+    main.add(extension);
+
+           // Option buttons:
+    con.gridx = GridBagConstraints.RELATIVE;
+    con.gridy = GridBagConstraints.RELATIVE;
+    con.weightx = 1;
+    con.gridwidth = 1;
+    con.anchor = GridBagConstraints.EAST;
+    con.fill = GridBagConstraints.NONE;
+    //gbl.setConstraints(ok, con);
+    opt.add(ok);
+    con.anchor = GridBagConstraints.WEST;
+    con.gridwidth = GridBagConstraints.REMAINDER;
+    //gbl.setConstraints(cancel, con);
+    opt.add(cancel);
+
+    getContentPane().add(main, BorderLayout.CENTER);
+    getContentPane().add(opt, BorderLayout.SOUTH);
+
+    //pack();
+    setSize(600, 170);
 
         Util.placeDialog(this, parent);
     }
 
     public boolean okPressed() {
-       return ok_pressed;
+    return ok_pressed;
     }
 
     public int index() { return index; }
index 1efc72a..de668ec 100644 (file)
@@ -33,7 +33,7 @@ public class ExpandEndnoteFilters extends MnemonicAwareAction implements Worker
     
     public void actionPerformed(ActionEvent e) {
         
-        String filename = Globals.getNewFile(frame, Globals.prefs, new File(System.getProperty("user.home")), ".zip", 
+        String filename = Globals.getNewFile(frame, new File(System.getProperty("user.home")), ".zip",
                 JFileChooser.SAVE_DIALOG, false); 
         
         if (filename == null)
index 1737b15..e4ac079 100644 (file)
@@ -739,7 +739,8 @@ public class FileActions
             }
 
             List comparators = new ArrayList();
-            comparators.add(new CrossRefEntryComparator());
+            if (isSaveOperation)
+                comparators.add(new CrossRefEntryComparator());
             comparators.add(new FieldComparator(pri, priD));
             comparators.add(new FieldComparator(sec, secD));
             comparators.add(new FieldComparator(ter, terD));
index fb5ede4..3b7f1cb 100755 (executable)
@@ -40,7 +40,7 @@ import net.sf.jabref.Globals;
  * DOCUMENT ME!
  *
  * @author $author$
- * @version $Revision: 1.9 $
+ * @version $Revision: 1.10 $
  */
 public class LayoutEntry
 {
@@ -192,6 +192,7 @@ public class LayoutEntry
 
     public String doLayout(BibtexEntry bibtex, BibtexDatabase database)
     {
+
         if (type == LayoutHelper.IS_LAYOUT_TEXT)
         {
             return text;
@@ -207,6 +208,7 @@ public class LayoutEntry
 
             if (field == null)
             {
+
                 return null;
             }
             else
@@ -219,6 +221,8 @@ public class LayoutEntry
         else if ((type == LayoutHelper.IS_FIELD_START) ||
                        (type == LayoutHelper.IS_GROUP_START))
         {
+
+
             String field = getField(bibtex, text, database);
             //String field = (String) bibtex.getField(text);
 
@@ -332,6 +336,7 @@ public class LayoutEntry
         //             else if (type == LayoutHelper.IS_OPTION_FIELD_PARAM)
         //             {
         //             }
+
         return "";
     }
 
@@ -437,8 +442,17 @@ public class LayoutEntry
     
     private String getField(BibtexEntry bibtex, String field, BibtexDatabase database) {
 
-      String res = (String)bibtex.getField(field);
-        
+        // Change: Morten Alver, May 23, 2006. Formatter argument uses this method to
+        // resolve field values. We need this part to resolve \bibtextype correctly in
+        // constructs like \format[ToLowerCase]{\bibtextype}:
+        if (field.equals("bibtextype"))
+        {
+            return bibtex.getType().getName();
+        }
+        // end change Morten Alver
+
+        String res = (String)bibtex.getField(field);
+
         if ((res != null) && (database != null))
         res = database.resolveForStrings(res);
 
index 10615e4..eaa8a3d 100644 (file)
@@ -38,7 +38,7 @@ public class AuthorAndsCommaReplacer implements LayoutFormatter {
                        break;
                }
 
-               return s;
+        return s;
 
        }
 }
index 2eedef6..9212691 100644 (file)
@@ -23,10 +23,10 @@ public class AuthorLastFirstAbbreviator implements LayoutFormatter {
        public String format(String fieldText) 
        {
 
-               String[] authors = fieldText.split(" and ");
+        String[] authors = fieldText.split(" and ");
 
                String abbrev = getAbbreviations(authors);
-               return (abbrev==null ? "" : abbrev);
+        return (abbrev==null ? "" : abbrev);
 
        }
                                
index eee15ce..0b6d7b1 100644 (file)
@@ -7,9 +7,9 @@ public class RTFChars implements LayoutFormatter {
 
 
   public String format(String field) {
+    
     int i;
     field = firstFormat(field);
-
     StringBuffer sb = new StringBuffer("");
     StringBuffer currentCommand = null;
     char c;
@@ -20,6 +20,7 @@ public class RTFChars implements LayoutFormatter {
         sb.append('\\');
         escaped = false;
       }
+
       else if (c == '\\') {
         escaped = true;
         incommand = true;
@@ -108,7 +109,7 @@ public class RTFChars implements LayoutFormatter {
   }
 
   private String firstFormat(String s) {
-    return s.replaceAll("&|\\\\&","&amp;");//.replaceAll("--", "&mdash;");
+    return s;//s.replaceAll("&|\\\\&","&amp;");//.replaceAll("--", "&mdash;");
   }
 
   private IntAndString getPart(String text, int i) {
index 7545e0c..0e26f82 100755 (executable)
@@ -4,8 +4,8 @@
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Egon Willighagen
-//  Version:  $Revision: 1.2 $
-//            $Date: 2004/05/02 16:25:43 $
+//  Version:  $Revision: 1.3 $
+//            $Date: 2006/05/23 21:25:49 $
 //            $Author: mortenalver $
 //
 //  Copyright (c) Egon Willighagen
@@ -29,7 +29,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * Remove brackets formatter.
  *
  * @author $author$
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
  */
 public class ToLowerCase implements LayoutFormatter
 {
@@ -37,8 +37,7 @@ public class ToLowerCase implements LayoutFormatter
 
     public String format(String fieldText)
     {
-        String fieldEntry = fieldText.toLowerCase();
-       return fieldEntry;
+        return fieldText.toLowerCase();
     }
 }
 ///////////////////////////////////////////////////////////////////////////////
index 735529c..c6b7689 100644 (file)
@@ -13,7 +13,6 @@ import java.io.File;
 import java.io.IOException;
 import java.net.URL;
 import java.net.MalformedURLException;
-import java.util.Vector;
 
 /**
  * Created by IntelliJ IDEA.
@@ -119,7 +118,7 @@ public class ExternalFilePanel extends JPanel {
         }
 
         String chosenFile =
-                Globals.getNewFile(frame, Globals.prefs, new File(dir), "."+fieldName,
+                Globals.getNewFile(frame, new File(dir), "."+fieldName,
                         JFileChooser.OPEN_DIALOG, false);
 
         if (chosenFile != null) {
index adcdb54..b7a66e9 100644 (file)
@@ -28,7 +28,6 @@ import java.awt.event.InputEvent;
 
 import javax.swing.*;
 
-import net.sf.jabref.EntryTable;
 import net.sf.jabref.gui.MainTable;
 
 public class EntryTableTransferHandler extends TransferHandler {
index 454813a..0d7bd58 100644 (file)
@@ -87,8 +87,8 @@ public class EntryCustomizationDialog2 extends JDialog implements ListSelectionL
         //right.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), Globals.lang("Fields")));
         right.setBorder(BorderFactory.createEtchedBorder());
         ok = new JButton("OK");
-        cancel = new JButton("Cancel");
-        apply = new JButton("Apply");
+        cancel = new JButton(Globals.lang("Cancel"));
+        apply = new JButton(Globals.lang("Apply"));
         ok.addActionListener(this);
         apply.addActionListener(this);
         cancel.addActionListener(this);
index 69e84f8..d0c21f0 100644 (file)
@@ -229,7 +229,7 @@ public class ImportInspectionDialog extends JDialog {
      *
      * @param entries
      */
-    public void addEntries(List entries) {
+    public void addEntries(Collection entries) {
 
         for (Iterator i = entries.iterator(); i.hasNext();) {
             BibtexEntry entry = (BibtexEntry) i.next();
index 137cb50..7bea404 100644 (file)
@@ -41,11 +41,15 @@ public class MainTable extends JTable {
     private Comparator searchComparator, groupComparator,
             markingComparator = new IsMarkedComparator();
     private Matcher searchMatcher, groupMatcher;
-    public static final int REQUIRED = 1
-    ,
-    OPTIONAL = 2
-    ,
-    OTHER = 3;
+
+    // Constants used to define how a cell should be rendered.
+    public static final int REQUIRED = 1, OPTIONAL = 2,
+      REQ_STRING = 1,
+      REQ_NUMBER = 2,
+      OPT_STRING = 3,
+      OTHER = 3,
+      BOOLEAN = 4,
+      ICON_COL = 8; // Constant to indicate that an icon cell renderer should be used.
 
     static {
         updateRenderers();
@@ -96,7 +100,10 @@ public class MainTable extends JTable {
 
     public void refreshSorting() {
         sortedForMarking.getReadWriteLock().writeLock().lock();
-        sortedForMarking.setComparator(markingComparator);
+        if (Globals.prefs.getBoolean("floatMarkedEntries"))
+            sortedForMarking.setComparator(markingComparator);
+        else
+            sortedForMarking.setComparator(null);
         sortedForMarking.getReadWriteLock().writeLock().unlock();
         sortedForSearch.getReadWriteLock().writeLock().lock();
         sortedForSearch.setComparator(searchComparator);
@@ -202,11 +209,11 @@ public class MainTable extends JTable {
             }
         }
         else if (tableColorCodes) {
-            if (status == EntryTableModel.REQUIRED)
+            if (status == REQUIRED)
                 renderer = reqRenderer;
-            else if (status == EntryTableModel.OPTIONAL)
+            else if (status == OPTIONAL)
                 renderer = optRenderer;
-            else if (status == EntryTableModel.BOOLEAN)
+            else if (status == BOOLEAN)
                 renderer = getDefaultRenderer(Boolean.class);
         }
 
diff --git a/src/java/net/sf/jabref/imports/AppendDatabaseAction.java b/src/java/net/sf/jabref/imports/AppendDatabaseAction.java
new file mode 100644 (file)
index 0000000..78b6f0b
--- /dev/null
@@ -0,0 +1,187 @@
+package net.sf.jabref.imports;
+
+import net.sf.jabref.imports.ParserResult;
+import net.sf.jabref.imports.OpenDatabaseAction;
+import net.sf.jabref.*;
+import net.sf.jabref.groups.GroupTreeNode;
+import net.sf.jabref.groups.AllEntriesGroup;
+import net.sf.jabref.groups.ExplicitGroup;
+import net.sf.jabref.groups.AbstractGroup;
+import net.sf.jabref.undo.NamedCompound;
+import net.sf.jabref.undo.UndoableInsertEntry;
+import net.sf.jabref.undo.UndoableInsertString;
+
+import javax.swing.*;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Enumeration;
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: alver
+ * Date: May 18, 2006
+ * Time: 9:49:02 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class AppendDatabaseAction extends BaseAction {
+    private JabRefFrame frame;
+    private BasePanel panel;
+    private List filesToOpen = new ArrayList();
+
+    public AppendDatabaseAction(JabRefFrame frame, BasePanel panel) {
+        this.frame = frame;
+        this.panel = panel;
+    }
+
+    public void action() {
+
+        filesToOpen.clear();
+        final MergeDialog md = new MergeDialog(frame, Globals.lang("Append database"), true);
+        Util.placeDialog(md, panel);
+        md.setVisible(true);
+        if (md.isOkPressed()) {
+            String[] chosen = Globals.getMultipleFiles(frame, new File(Globals.prefs.get("workingDirectory")),
+                    null, false);
+          //String chosenFile = Globals.getNewFile(frame, new File(Globals.prefs.get("workingDirectory")),
+          //                                       null, JFileChooser.OPEN_DIALOG, false);
+          if(chosen == null)
+            return;
+          for (int i=0; i<chosen.length; i++)
+            filesToOpen.add(new File(chosen[i]));
+
+            // Run the actual open in a thread to prevent the program
+            // locking until the file is loaded.
+            (new Thread() {
+                public void run() {
+                    openIt(md.importEntries(), md.importStrings(),
+                            md.importGroups(), md.importSelectorWords());
+                }
+            }).start();
+            //frame.getFileHistory().newFile(panel.fileToOpen.getPath());
+        }
+
+      }
+
+    void openIt(boolean importEntries, boolean importStrings,
+                boolean importGroups, boolean importSelectorWords) {
+        if (filesToOpen.size() == 0)
+            return;
+        for (Iterator i = filesToOpen.iterator(); i.hasNext();) {
+            File file = (File)i.next();
+            try {
+                Globals.prefs.put("workingDirectory", file.getPath());
+                // Should this be done _after_ we know it was successfully opened?
+                String encoding = Globals.prefs.get("defaultEncoding");
+                ParserResult pr = OpenDatabaseAction.loadDatabase(file, encoding);
+                mergeFromBibtex(frame, panel, pr, importEntries, importStrings,
+                        importGroups, importSelectorWords);
+                panel.output(Globals.lang("Imported from database") + " '" + file.getPath() + "'");
+            } catch (Throwable ex) {
+                ex.printStackTrace();
+                JOptionPane.showMessageDialog
+                        (panel, ex.getMessage(),
+                                "Open database", JOptionPane.ERROR_MESSAGE);
+            }
+        }
+    }
+
+    public static void mergeFromBibtex(JabRefFrame frame, BasePanel panel, ParserResult pr,
+                                boolean importEntries, boolean importStrings,
+                                boolean importGroups, boolean importSelectorWords)
+              throws KeyCollisionException {
+
+          BibtexDatabase fromDatabase = pr.getDatabase();
+          ArrayList appendedEntries = new ArrayList();
+          ArrayList originalEntries = new ArrayList();
+        BibtexDatabase database = panel.database();
+          BibtexEntry originalEntry;
+          NamedCompound ce = new NamedCompound(Globals.lang("Append database"));
+          MetaData meta = new MetaData(pr.getMetaData(), pr.getDatabase());
+
+          if (importEntries) { // Add entries
+              Iterator i = fromDatabase.getKeySet().iterator();
+              while (i.hasNext()) {
+                  originalEntry = fromDatabase.getEntryById((String) i.next());
+                  BibtexEntry be = (BibtexEntry) (originalEntry.clone());
+                  be.setId(Util.createNeutralId());
+                  database.insertEntry(be);
+                  appendedEntries.add(be);
+                  originalEntries.add(originalEntry);
+                  ce.addEdit(new UndoableInsertEntry(database, be, panel));
+              }
+          }
+
+          if (importStrings) {
+              BibtexString bs;
+              int pos = 0;
+              Iterator i = fromDatabase.getStringKeySet().iterator();
+              for (; i.hasNext();) {
+                  bs = (BibtexString) (fromDatabase.getString(i.next()).clone());
+                  if (!database.hasStringLabel(bs.getName())) {
+                      //pos = toDatabase.getStringCount();
+                      database.addString(bs);
+                      ce.addEdit(new UndoableInsertString(panel, database, bs));
+                  }
+              }
+          }
+
+          if (importGroups) {
+              GroupTreeNode newGroups = meta.getGroups();
+              if (newGroups != null) {
+
+                  // ensure that there is always only one AllEntriesGroup
+                  if (newGroups.getGroup() instanceof AllEntriesGroup) {
+                      // create a dummy group
+                      ExplicitGroup group = new ExplicitGroup("Imported",
+                              AbstractGroup.INDEPENDENT); // JZTODO lyrics
+                      newGroups.setGroup(group);
+                      for (int i = 0; i < appendedEntries.size(); ++i)
+                          group.addEntry((BibtexEntry) appendedEntries.get(i));
+                  }
+
+                  // groupsSelector is always created, even when no groups
+                  // have been defined. therefore, no check for null is
+                  // required here
+                  frame.groupSelector.addGroups(newGroups, ce);
+                  // for explicit groups, the entries copied to the mother fromDatabase have to
+                  // be "reassigned", i.e. the old reference is removed and the reference
+                  // to the new fromDatabase is added.
+                  GroupTreeNode node;
+                  ExplicitGroup group;
+                  BibtexEntry entry;
+                  for (Enumeration e = newGroups.preorderEnumeration(); e.hasMoreElements();) {
+                      node = (GroupTreeNode) e.nextElement();
+                      if (!(node.getGroup() instanceof ExplicitGroup))
+                          continue;
+                      group = (ExplicitGroup) node.getGroup();
+                      for (int i = 0; i < originalEntries.size(); ++i) {
+                          entry = (BibtexEntry) originalEntries.get(i);
+                          if (group.contains(entry)) {
+                              group.removeEntry(entry);
+                              group.addEntry((BibtexEntry) appendedEntries.get(i));
+                          }
+                      }
+                  }
+                  frame.groupSelector.revalidateGroups();
+              }
+          }
+
+          if (importSelectorWords) {
+              Iterator i = meta.iterator();
+              while (i.hasNext()) {
+                  String s = (String) i.next();
+                  if (s.startsWith(Globals.SELECTOR_META_PREFIX)) {
+                      panel.metaData().putData(s, meta.getData(s));
+                  }
+              }
+          }
+
+          ce.end();
+          panel.undoManager.addEdit(ce);
+          panel.markBaseChanged();
+      }
+
+
+}
index ad37e2e..b8dff0d 100644 (file)
@@ -249,10 +249,10 @@ public class BibtexParser
                     boolean duplicateKey = _db.insertEntry(be);
                     if (duplicateKey) // JZTODO lyrics
                       _pr.addWarning(Globals.lang("duplicate BibTeX key")+": "+be.getCiteKey()
-                              + " (" + "Grouping may not work for this entry." + ")");
+                              + " (" + Globals.lang("grouping may not work for this entry") + ")");
                     else if (be.getCiteKey() == null || be.getCiteKey().equals("")) {
                         _pr.addWarning(Globals.lang("empty BibTeX key")+": "+be.getAuthorTitleYear(40)
-                                + " (" + "Grouping may not work for this entry." + ")");
+                                + " (" + Globals.lang("grouping may not work for this entry") + ")");
                     }
                 }
 
@@ -429,6 +429,11 @@ public class BibtexParser
             }
             if (c == '"')
             {
+                StringBuffer text = parseQuotedFieldExactly();
+                value.append(fieldContentParser.format(text));
+                /*
+
+                The following code doesn't handle {"} correctly:
                 // value is a string
                 consume('"');
 
@@ -445,7 +450,7 @@ public class BibtexParser
                 }
 
                 consume('"');
-
+                */
             }
             else if (c == '{') {
                 // Value is a string enclosed in brackets. There can be pairs
@@ -714,6 +719,38 @@ public class BibtexParser
         return value;
     }
 
+    private StringBuffer parseQuotedFieldExactly() throws IOException
+    {
+
+        StringBuffer value = new StringBuffer();
+
+        consume('"');
+
+        int brackets = 0;
+
+        while (!((peek() == '"') && (brackets == 0)))
+        {
+
+            int j = read();
+            if ((j == -1) || (j == 65535))
+            {
+                throw new RuntimeException("Error in line "+line
+                                           +": EOF in mid-string");
+            }
+            else if (j == '{')
+                brackets++;
+            else if (j == '}')
+                brackets--;
+
+            value.append((char) j);
+
+        }
+
+        consume('"');
+
+        return value;
+    }
+
     private void consume(char expected) throws IOException
     {
         int c = read();
index 6da95fc..d52d361 100644 (file)
@@ -88,9 +88,10 @@ public class EndnoteImporter extends ImportFormat {
         Type = "";
         Editor = "";
         boolean IsEditedBook = false;
-        String[] fields = entries[i].substring(1).split("\n%");
+        String[] fields = entries[i].trim().substring(1).split("\n%");
         //String lastPrefix = "";
         for (int j = 0; j < fields.length; j++){
+
         if (fields[j].length() < 3) continue;
 
         /*
@@ -107,7 +108,9 @@ public class EndnoteImporter extends ImportFormat {
            */
 
         String prefix = fields[j].substring(0, 1);
+
         String val = fields[j].substring(2);
+
         if (prefix.equals("A")){
             if (Author.equals("")) Author = val;
             else Author += " and " + val;
@@ -177,8 +180,8 @@ public class EndnoteImporter extends ImportFormat {
         }
 
         //fixauthorscomma
-        if (!Author.equals("")) hm.put("author", AuthorList.fixAuthor_lastNameFirst(Author));
-        if (!Editor.equals("")) hm.put("editor", AuthorList.fixAuthor_lastNameFirst(Editor));
+        if (!Author.equals("")) hm.put("author", fixAuthor(Author));
+        if (!Editor.equals("")) hm.put("editor", fixAuthor(Editor));
         BibtexEntry b = new BibtexEntry(BibtexFields.DEFAULT_BIBTEXENTRY_ID, Globals
                         .getEntryType(Type)); // id assumes an existing database so don't
         // create one here
@@ -191,4 +194,26 @@ public class EndnoteImporter extends ImportFormat {
 
     }
 
+    /**
+     * We must be careful about the author names, since they can be presented differently
+     * by different sources. Normally each %A tag brings one name, and we get the authors
+     * separated by " and ". This is the correct behaviour.
+     * One source lists the names separated by comma, with a comma at the end. We can detect
+     * this format and fix it.
+     * @param s The author string
+     * @return The fixed author string
+     */
+    private String fixAuthor(String s) {
+        int index = s.indexOf(" and ");
+        if (index >= 0)
+            return AuthorList.fixAuthor_lastNameFirst(s);
+        // Look for the comma at the end:
+        index = s.lastIndexOf(",");
+        if (index == s.length()-1) {
+            String mod = s.substring(0, s.length()-1).replaceAll(", ", " and ");
+            return AuthorList.fixAuthor_lastNameFirst(mod);
+        } else
+            return AuthorList.fixAuthor_lastNameFirst(s);
+    }
+
 }
index 6bf30f5..45669cf 100644 (file)
@@ -42,7 +42,7 @@ public class HTMLConverter implements LayoutFormatter {
         // Have just read the < character that starts the tag.
         int index = text.indexOf(';', position);
         if ((index > position) && (index-position < MAX_CHAR_LENGTH)) {
-            //System.out.println("Removed code: "+text.substring(position, index));
+            System.out.println("Removed code: "+text.substring(position, index));
             return index+1; // Just skip the tag.
         } else return position; // Don't do anything.
     }
@@ -51,7 +51,7 @@ public class HTMLConverter implements LayoutFormatter {
         // Have just read the < character that starts the tag.
         int index = text.indexOf('>', position);
         if ((index > position) && (index-position < MAX_TAG_LENGTH)) {
-            //System.out.println("Removed tag: "+text.substring(position, index));
+            System.out.println("Removed tag: "+text.substring(position, index));
             return index+1; // Just skip the tag.
         } else return position; // Don't do anything.
     }
index 54c1f97..c4116b3 100644 (file)
@@ -91,7 +91,7 @@ public class IEEEXploreFetcher implements Runnable, EntryFetcher {
     }
 
     public String getHelpPage() {
-        return "IEEEXplorerHelp.html";
+        return "IEEEXploreHelp.html";
     }
 
     public String getKeyName() {
@@ -405,7 +405,8 @@ public class IEEEXploreFetcher implements Runnable, EntryFetcher {
             throw new IOException(Globals.lang("Could not parse number of hits"));
         String substring = page.substring(ind, Math.min(ind+42, page.length()));
         Matcher m = pattern.matcher(substring);
-        m.find();
+        if (!m.find())
+            return 0;
         if (m.groupCount() >= 1) {
             try {
                 return Integer.parseInt(m.group(1));
index 9080059..f170726 100644 (file)
@@ -112,9 +112,9 @@ public class ImportCustomizationDialog extends JDialog {
     addFromFolderButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        CustomImportList.Importer importer = prefs.customImports.new Importer();  
-       importer.setBasePath( Globals.getNewDir(frame, prefs, new File(prefs.get("workingDirectory")), "",
+       importer.setBasePath( Globals.getNewDir(frame, new File(prefs.get("workingDirectory")), "",
            Globals.lang("Select Classpath of New Importer"), JFileChooser.CUSTOM_DIALOG, false) );
-       String chosenFileStr = Globals.getNewFile(frame, prefs, importer.getBasePath(), ".class",
+       String chosenFileStr = Globals.getNewFile(frame, importer.getBasePath(), ".class",
            Globals.lang("Select new ImportFormat Subclass"), JFileChooser.CUSTOM_DIALOG, false);
        if (chosenFileStr != null) {
          try {
@@ -124,6 +124,9 @@ public class ImportCustomizationDialog extends JDialog {
          } catch (Exception exc) {           
            exc.printStackTrace();
            JOptionPane.showMessageDialog(frame, Globals.lang("Could not instantiate %0 %1", chosenFileStr + ":\n", exc.getMessage()));
+         } catch (NoClassDefFoundError exc) {
+           exc.printStackTrace();
+           JOptionPane.showMessageDialog(frame, Globals.lang("Could not instantiate %0 %1. Have you chosen the correct package path?", chosenFileStr + ":\n", exc.getMessage()));           
          }
 
          addOrReplaceImporter(importer);
@@ -137,7 +140,7 @@ public class ImportCustomizationDialog extends JDialog {
 
     addFromJarButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
-       String basePath = Globals.getNewFile(frame, prefs, new File(prefs.get("workingDirectory")), ".zip,.jar",
+       String basePath = Globals.getNewFile(frame, new File(prefs.get("workingDirectory")), ".zip,.jar",
            Globals.lang("Select a Zip-archive"), JFileChooser.CUSTOM_DIALOG, false);
        ZipFile zipFile = null;
        if (basePath != null) {
@@ -145,8 +148,13 @@ public class ImportCustomizationDialog extends JDialog {
            zipFile = new ZipFile(new File(basePath), ZipFile.OPEN_READ);
          } catch (IOException exc) {
            exc.printStackTrace();
-           JOptionPane.showMessageDialog(frame, Globals.lang("Could not open %0 %1", basePath + ":\n", exc.getMessage()));
+           JOptionPane.showMessageDialog(frame, Globals.lang("Could not open %0 %1", basePath + ":\n", exc.getMessage()) 
+                                              + "\n" + Globals.lang("Have you chosen the correct package path?"));
            return;         
+         } catch (NoClassDefFoundError exc) {
+           exc.printStackTrace();
+           JOptionPane.showMessageDialog(frame, Globals.lang("Could not instantiate %0 %1", basePath + ":\n", exc.getMessage())
+                                              + "\n" + Globals.lang("Have you chosen the correct package path?"));           
          }
        }
          
index d841eb1..9442e4f 100644 (file)
 package net.sf.jabref.imports;
 
-import javax.swing.*;
-import java.awt.event.*;
-import java.io.IOException;
-import java.io.File;
-
 import net.sf.jabref.*;
+import net.sf.jabref.undo.NamedCompound;
+import net.sf.jabref.undo.UndoableInsertEntry;
 import net.sf.jabref.gui.ImportInspectionDialog;
 
+import javax.swing.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.HashMap;
+
+public class ImportMenuItem extends JMenuItem implements ActionListener {
 
-public class ImportMenuItem extends JMenuItem implements ActionListener,
-        ImportInspectionDialog.CallBack {
-    
-    ImportFormat importer;
     JabRefFrame frame;
     boolean openInNew;
+    MyWorker worker = null;
+    ImportFormat importer;
+
+    public ImportMenuItem(JabRefFrame frame, boolean openInNew) {
+        this(frame, openInNew, null);
+    }
 
-    public ImportMenuItem(JabRefFrame frame, ImportFormat importer, boolean openInNew) {
-       super(importer.getFormatName());
-       this.frame = frame;
-       this.importer = importer;
-       this.openInNew = openInNew;
-      this.setToolTipText( importer.getDescription() );
-       addActionListener(this);
+    public ImportMenuItem(JabRefFrame frame, boolean openInNew, ImportFormat importer) {
+        super(importer != null ? importer.getFormatName()
+                : Globals.lang("Autodetect format"));
+        this.importer = importer;
+        this.frame = frame;
+        this.openInNew = openInNew;
+        addActionListener(this);
     }
 
     public void actionPerformed(ActionEvent e) {
-       MyWorker worker = new MyWorker();
-       worker.init();
-       worker.getWorker().run();
-       worker.getCallBack().update();
+        worker = new MyWorker();
+        worker.init();
+        worker.getWorker().run();
+        worker.getCallBack().update();
     }
 
-    class MyWorker extends AbstractWorker {
-       String filename = null, formatName = null;
-       java.util.List entries = null;
-       boolean fileOk = false;
-       public void init() {
-           filename = Globals.getNewFile(frame, Globals.prefs, new File(Globals.prefs.get("workingDirectory")),
-          importer.getExtensions(), JFileChooser.OPEN_DIALOG, false);
-           if ((filename != null) && !(new File(filename)).exists()) {
-               JOptionPane.showMessageDialog(frame, Globals.lang("File not found")+": '"+filename+"'",
-                                             Globals.lang("Import failed"), JOptionPane.ERROR_MESSAGE);
-           }
-           else if (filename != null) {
-               frame.block();
-               frame.output(Globals.lang("Importing file")+": '"+filename+"'");
-               fileOk = true;
-            Globals.prefs.put("workingDirectory", filename);
+    class MyWorker extends AbstractWorker implements ImportInspectionDialog.CallBack {
+        String[] filenames = null, formatName = null;
+        ParserResult bibtexResult = null; // Contains the merged import results
+        boolean fileOk = false;
+
+        public void init() {
+            filenames = Globals.getMultipleFiles(frame,
+                    new File(Globals.prefs.get("workingDirectory")),
+                    (importer != null ? importer.getExtensions() : null), true);
+
+            /*if ((filenames != null) && !(new File(filename)).exists()) {
+               JOptionPane.showMessageDialog(frame, Globals.lang("File not found") + ": '" + filename + "'",
+                       Globals.lang("Error"), JOptionPane.ERROR_MESSAGE);
+           } else*/
+            if ((filenames != null) && (filenames.length > 0)) {
+                frame.block();
+                frame.output(Globals.lang("Starting import"));
+                //frame.output(Globals.lang("Importing file") + ": '" + filename + "'");
+                fileOk = true;
+
+                Globals.prefs.put("workingDirectory", filenames[0]);
+            }
+
         }
-           
-       }
-       public void run() {
-           if (!fileOk)
-               return;
-           
-           try {
-               entries = Globals.importFormatReader.importFromFile(importer, filename);
-               if (entries != null)
-                   ImportFormatReader.purgeEmptyEntries(entries);
-           } catch (IOException ex) {
-               ex.printStackTrace();
-           }
-       }
-       public void update() {
-           if (!fileOk)
-               return;
-
-           if (entries != null) {
-            BasePanel panel = null;
-            if (!openInNew) {
-                panel = (BasePanel)frame.getTabbedPane().getSelectedComponent();
+
+        public void run() {
+            if (!fileOk)
+                return;
+
+            // We import all files and collect their results:
+            List imports = new ArrayList();
+            for (int i = 0; i < filenames.length; i++) {
+                String filename = filenames[i];
+                if (importer != null)
+                    // Specific importer:
+                    try {
+                        imports.add(new Object[] { importer.getFormatName(),
+                                Globals.importFormatReader.importFromFile(importer, filename)});
+                    } catch (IOException e) {
+                        // No entries found...
+                    }
+                else
+                    // Unknown format:
+                    imports.add(Globals.importFormatReader.importUnknownFormat(filename));
+
             }
 
-            frame.addImportedEntries(panel, entries, filename, openInNew, ImportMenuItem.this);
-            
+            // Ok, done. Then try to gather in all we have found. Since we might have found
+            // one or more bibtex results, it's best to gather them in a BibtexDatabase.
+            bibtexResult = mergeImportResults(imports);
+
+        }
+
+        public void update() {
+            if (!fileOk)
+                return;
 
-           } else {
-               JOptionPane.showMessageDialog(frame, Globals.lang("No entries found. Please make sure you are "
+            // TODO: undo is not handled properly here, except for the entries added by
+            //  the import inspection dialog.
+            if (bibtexResult != null) {
+                if (!openInNew) {
+                    final BasePanel panel = (BasePanel) frame.getTabbedPane().getSelectedComponent();
+                    BibtexDatabase toAddTo = panel.database();
+                    // Use the import inspection dialog if it is enabled in preferences, and
+                    // (there are more than one entry or the inspection dialog is also enabled
+                    // for single entries):
+                    if (Globals.prefs.getBoolean("useImportInspectionDialog") &&
+                            (Globals.prefs.getBoolean("useImportInspectionDialogForSingle")
+                                    || (bibtexResult.getDatabase().getEntryCount() > 1))) {
+                        ImportInspectionDialog diag = new ImportInspectionDialog(frame, panel,
+                                BibtexFields.DEFAULT_INSPECTION_FIELDS,
+                                Globals.lang("Import"), openInNew);
+                        diag.addEntries(bibtexResult.getDatabase().getEntries());
+                        diag.addCallBack(this);
+                        diag.entryListComplete();
+                        Util.placeDialog(diag, frame);
+                        diag.setVisible(true);
+                        diag.toFront();
+                    } else {
+                        NamedCompound ce = new NamedCompound(Globals.lang("Import entries"));
+                        for (Iterator i = bibtexResult.getDatabase().getEntries().iterator();
+           &n