Imported Upstream version 2.11~beta2+ds upstream/2.11_beta2+ds
authorgregor herrmann <gregoa@debian.org>
Wed, 20 May 2015 15:32:45 +0000 (17:32 +0200)
committergregor herrmann <gregoa@debian.org>
Wed, 20 May 2015 15:32:45 +0000 (17:32 +0200)
44 files changed:
CHANGELOG
CONTRIBUTING.md
README.md
build.gradle
build.xml
src/main/java/net/sf/jabref/BasePanel.java
src/main/java/net/sf/jabref/FieldTextMenu.java
src/main/java/net/sf/jabref/JabRef.java
src/main/java/net/sf/jabref/JabRefFrame.java
src/main/java/net/sf/jabref/JabRefPreferences.java
src/main/java/net/sf/jabref/SidePaneComponent.java
src/main/java/net/sf/jabref/SidePaneManager.java
src/main/java/net/sf/jabref/export/FileActions.java
src/main/java/net/sf/jabref/export/SaveDatabaseAction.java
src/main/java/net/sf/jabref/external/FileLinksUpgradeWarning.java
src/main/java/net/sf/jabref/imports/DBLPFetcher.java
src/main/java/net/sf/jabref/imports/DBLPHelper.java
src/main/java/net/sf/jabref/util/GoogleUrlCleaner.java [new file with mode: 0644]
src/main/resources/help/About.html
src/main/resources/help/da/About.html
src/main/resources/help/de/About.html
src/main/resources/help/fr/About.html
src/main/resources/help/in/About.html
src/main/resources/help/ja/About.html
src/main/resources/help/ja/BibtexHelp.html
src/main/resources/help/ja/Contents.html
src/main/resources/help/ja/LabelPatterns.html
src/main/resources/images/splash-beta.svg
src/main/resources/images/splash.png
src/main/resources/resource/JabRef_da.properties
src/main/resources/resource/JabRef_de.properties
src/main/resources/resource/JabRef_en.properties
src/main/resources/resource/JabRef_es.properties
src/main/resources/resource/JabRef_fr.properties
src/main/resources/resource/JabRef_in.properties
src/main/resources/resource/JabRef_it.properties
src/main/resources/resource/JabRef_ja.properties
src/main/resources/resource/JabRef_nl.properties
src/main/resources/resource/JabRef_no.properties
src/main/resources/resource/JabRef_pt_BR.properties
src/main/resources/resource/JabRef_ru.properties
src/main/resources/resource/JabRef_tr.properties
src/main/resources/resource/JabRef_vi.properties
src/main/resources/resource/JabRef_zh.properties

index ff0e8af..d863ed3 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+2.11 beta 2
+    - Feature: Option to clean URLs generated by Google (patch #204)
+    - Fix for bug #1272: JabRef now launches on Mac OS X
+    - Updated DBLPfetcher to new DBLP functionality
+    - Feature: Ability to reorder the panels in the side pane
+    - Feature: Option to save selected entries as plain BibTex without JabRef metadata
 2.11 beta
     - Some UI updates (mainly removing unnecessary boundaries)
     - Feature: Gridlines are now optional (and disabled by default)
index 8611a87..3a72c17 100644 (file)
@@ -1,6 +1,8 @@
 ## Understanding the basics
 Not sure what a pull request is, or how to submit one?  Take a look at GitHub's excellent [help documentation] first.
 
+We also have [guidelines for setting up a local workspace](https://github.com/JabRef/jabref/wiki/Guidelines-for-setting-up-a-local-workspace).
+
 
 ## Add your change to the CHANGELOG
 You should edit the [CHANGELOG](CHANGELOG) located in the root directory of the JabRef source.
index 7ba7b8f..99151db 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# JabRef version 2.11 beta
+# JabRef version 2.11 beta 2
 
 This version is a beta version. Features may not work as expected.
 
@@ -105,7 +105,9 @@ and then generate the Eclipse `gradlew eclipse` or IntelliJ IDEA `gradlew idea`
 
 ## Release Process
 
-Requires [NSIS](http://nsis.sourceforge.net) with the [WinShell plug-in](http://nsis.sourceforge.net/WinShell_plug-in).
+Requires
+ * [launch4j](http://launch4j.sourceforge.net/)
+ * [NSIS](http://nsis.sourceforge.net) with the [WinShell plug-in](http://nsis.sourceforge.net/WinShell_plug-in).
 
 Replace `ANY_ANT_TARGET` with the Ant Target of your choice, and the system will build your binaries.
 To get a list of all targets, use `gradlew tasks`.
index 21b658c..64e5d5b 100644 (file)
@@ -28,7 +28,7 @@ test {
     }
 }
 
-version = "2.11b"
+version = "2.11b2"
 
 repositories {
     mavenCentral()
index a44f9f8..f014216 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -35,8 +35,8 @@
      +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
 
        <!-- some version information -->
-       <property name="jabref.version" value="2.11b" />
-       <property name="jabref.version.full" value="2.11.1.0" /> <!-- a version number with 4 places. Required by launch4j -->
+       <property name="jabref.version" value="2.11b2" />
+       <property name="jabref.version.full" value="2.11.2.0" /> <!-- a version number with 4 places. Required by launch4j -->
        <property name="jabref.year" value="2015" />
        <property name="jabref.placeholder.version" value="@version@" />
        <property name="jabref.placeholder.year" value="@year@" />
index 5d5dc1c..900e7c8 100644 (file)
@@ -70,6 +70,7 @@ import net.sf.jabref.export.FileActions;
 import net.sf.jabref.export.SaveDatabaseAction;
 import net.sf.jabref.export.SaveException;
 import net.sf.jabref.export.SaveSession;
+import net.sf.jabref.export.FileActions.DatabaseSaveType;
 import net.sf.jabref.export.layout.Layout;
 import net.sf.jabref.export.layout.LayoutHelper;
 import net.sf.jabref.external.AttachFileAction;
@@ -411,30 +412,10 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
             }
         });
 
-        actions.put("saveSelectedAs", new BaseAction () {
-                public void action() throws Throwable {
-
-                  String chosenFile = FileDialogs.getNewFile(frame, new File(Globals.prefs.get("workingDirectory")), ".bib",
-                                                         JFileChooser.SAVE_DIALOG, false);
-                  if (chosenFile != null) {
-                    File expFile = new File(chosenFile);
-                    if (!expFile.exists() ||
-                        (JOptionPane.showConfirmDialog
-                         (frame, "'"+expFile.getName()+"' "+
-                          Globals.lang("exists. Overwrite file?"),
-                          Globals.lang("Save database"), JOptionPane.OK_CANCEL_OPTION)
-                         == JOptionPane.OK_OPTION)) {
-
-                      saveDatabase(expFile, true, Globals.prefs.get("defaultEncoding"));
-                      //runCommand("save");
-                      frame.getFileHistory().newFile(expFile.getPath());
-                      frame.output(Globals.lang("Saved selected to")+" '"
-                                   +expFile.getPath()+"'.");
-                        }
-                    }
-                }
-            });
-    
+        actions.put("saveSelectedAs", new SaveSelectedAction(FileActions.DatabaseSaveType.DEFAULT));
+        
+        actions.put("saveSelectedAsPlain", new SaveSelectedAction(FileActions.DatabaseSaveType.PLAIN_BIBTEX));
+        
         // The action for copying selected entries.
         actions.put("copy", new BaseAction() {
                 public void action() {
@@ -1716,7 +1697,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
       //}).start();
     }
 
-    private boolean saveDatabase(File file, boolean selectedOnly, String encoding) throws SaveException {
+    private boolean saveDatabase(File file, boolean selectedOnly, String encoding, FileActions.DatabaseSaveType saveType) throws SaveException {
         SaveSession session;
         frame.block();
         try {
@@ -1725,7 +1706,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
                                            Globals.prefs, false, false, encoding, false);
             else
                 session = FileActions.savePartOfDatabase(database, metaData, file,
-                                               Globals.prefs, mainTable.getSelectedEntries(), encoding);
+                                               Globals.prefs, mainTable.getSelectedEntries(), encoding, saveType);
 
         } catch (UnsupportedCharsetException ex2) {
             JOptionPane.showMessageDialog(frame, Globals.lang("Could not save file. "
@@ -1775,7 +1756,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
                         JOptionPane.QUESTION_MESSAGE, null, Globals.ENCODINGS, encoding);
                 if (choice != null) {
                     String newEncoding = (String)choice;
-                    return saveDatabase(file, selectedOnly, newEncoding);
+                    return saveDatabase(file, selectedOnly, newEncoding, saveType);
                 } else
                     commit = false;
             } else if (answer == JOptionPane.CANCEL_OPTION)
@@ -3096,5 +3077,34 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
         frame.forward.setEnabled(nextEntries.size() > 0);
     }
 
-
+    private class SaveSelectedAction extends BaseAction {
+       
+       private DatabaseSaveType saveType;
+       
+       public SaveSelectedAction(DatabaseSaveType saveType) {
+               this.saveType = saveType;
+       }
+       
+        public void action() throws Throwable {
+
+            String chosenFile = FileDialogs.getNewFile(frame, new File(Globals.prefs.get("workingDirectory")), ".bib",
+                                                   JFileChooser.SAVE_DIALOG, false);
+            if (chosenFile != null) {
+              File expFile = new File(chosenFile);
+              if (!expFile.exists() ||
+                  (JOptionPane.showConfirmDialog
+                   (frame, "'"+expFile.getName()+"' "+
+                    Globals.lang("exists. Overwrite file?"),
+                    Globals.lang("Save database"), JOptionPane.OK_CANCEL_OPTION)
+                   == JOptionPane.OK_OPTION)) {
+
+                saveDatabase(expFile, true, Globals.prefs.get("defaultEncoding"), saveType);
+                //runCommand("save");
+                frame.getFileHistory().newFile(expFile.getPath());
+                frame.output(Globals.lang("Saved selected to")+" '"
+                             +expFile.getPath()+"'.");
+                  }
+              }
+          }
+      }
 }
index f500959..567f61e 100644 (file)
@@ -48,6 +48,7 @@ import javax.swing.text.JTextComponent;
 
 import net.sf.jabref.util.CaseChangeMenu;
 import net.sf.jabref.util.NameListNormalizer;
+import net.sf.jabref.util.GoogleUrlCleaner;
 
 public class FieldTextMenu implements MouseListener
 {
@@ -65,6 +66,8 @@ public class FieldTextMenu implements MouseListener
     inputMenu.add( copyAct ) ;
     inputMenu.addSeparator();
     inputMenu.add(new ReplaceAction());
+    inputMenu.add(new UrlAction());
+
     if (myFieldName.getTextComponent() instanceof JTextComponent)
         inputMenu.add(new CaseChangeMenu((JTextComponent) myFieldName.getTextComponent()));
   }
@@ -219,5 +222,18 @@ public class FieldTextMenu implements MouseListener
     }
   }
 
+  class UrlAction extends BasicAction{
+    public UrlAction(){
+        super("Clean Google URL");
+        putValue(SHORT_DESCRIPTION, Globals.lang("If possible, clean URL that Google search returned"));
+    }
+    public void actionPerformed(ActionEvent evt){
+        if (myFieldName.getText().equals("")){
+            return;
+        }
+        String input = myFieldName.getText();
+        myFieldName.setText(GoogleUrlCleaner.cleanUrl(input));
+    }
+  }
 
 }
index 20b8f84..ed94c70 100644 (file)
@@ -187,12 +187,13 @@ public class JabRef {
                Globals.NEWLINE = Globals.prefs.get(JabRefPreferences.NEWLINE);
                Globals.NEWLINE_LENGTH = Globals.NEWLINE.length();
                
-               
-               // Set application user model id so that pinning JabRef to the Win7/8 taskbar works
-               // Based on http://stackoverflow.com/a/1928830
-               setCurrentProcessExplicitAppUserModelID("JabRef."+Globals.VERSION);
-           //System.out.println(getCurrentProcessExplicitAppUserModelID());
-               
+               if (Globals.ON_WIN) {
+            // Set application user model id so that pinning JabRef to the Win7/8 taskbar works
+            // Based on http://stackoverflow.com/a/1928830
+            setCurrentProcessExplicitAppUserModelID("JabRef." + Globals.VERSION);
+            //System.out.println(getCurrentProcessExplicitAppUserModelID());
+        }
+
                openWindow(processArguments(args, true));
        }
     
@@ -223,7 +224,9 @@ public class JabRef {
 
     static
     {
-      Native.register("shell32");
+        if (Globals.ON_WIN) {
+            Native.register("shell32");
+        }
     }
 
 
index 7b30bbc..e189c5e 100644 (file)
@@ -186,6 +186,10 @@ public class JabRefFrame extends JFrame implements OutputPrinter {
                                          "Save selected as ...",
                                          Globals.lang("Save selected as ..."),
                                          GUIGlobals.getIconUrl("saveAs")),
+      saveSelectedAsPlain = new GeneralAction("saveSelectedAsPlain",
+                                                 "Save selected as plain BibTeX ...",
+                                                 Globals.lang("Save selected as plain BibTeX ..."),
+                                                 GUIGlobals.getIconUrl("saveAs")),
       exportAll = ExportFormats.getExportAction(this, false),
       exportSelected = ExportFormats.getExportAction(this, true),
       importCurrent = ImportFormats.getImportAction(this, false),
@@ -1291,6 +1295,7 @@ public JabRefPreferences prefs() {
       file.add(saveAs);
       file.add(saveAll);
       file.add(saveSelectedAs);
+      file.add(saveSelectedAsPlain);
       file.addSeparator();
       //file.add(importMenu);
       //file.add(importNewMenu);
index 9fc09f4..ab89ba2 100644 (file)
@@ -1,4 +1,4 @@
-/*  Copyright (C) 2003-2012 JabRef contributors.
+/*  Copyright (C) 2003-2015 JabRef contributors.
  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
@@ -310,6 +310,9 @@ public class JabRefPreferences {
 
         defaults.put(NEWLINE, System.getProperty("line.separator"));
         
+        defaults.put("sidePaneComponentNames", "");
+        defaults.put("sidePaneComponentPreferredPositions", "");
+
         defaults.put("columnNames", "entrytype;author;title;year;journal;owner;timestamp;bibtexkey");
         defaults.put("columnWidths", "75;280;400;60;100;100;100;100");
         defaults.put(PersistenceTableColumnListener.ACTIVATE_PREF_KEY,
index 716f49b..165cdac 100644 (file)
@@ -1,4 +1,4 @@
-/*  Copyright (C) 2003-2011 JabRef contributors.
+/*  Copyright (C) 2003-2015 JabRef contributors.
     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
@@ -31,6 +31,8 @@ import com.jgoodies.uif_lite.panel.SimpleInternalFrame;
 public abstract class SidePaneComponent extends SimpleInternalFrame {
 
        protected JButton close = new JButton(GUIGlobals.getImage("close"));
+       protected JButton up = new JButton(GUIGlobals.getImage("up"));
+       protected JButton down = new JButton(GUIGlobals.getImage("down"));
 
        protected boolean visible = false;
 
@@ -46,7 +48,15 @@ public abstract class SidePaneComponent extends SimpleInternalFrame {
                close.setMargin(new Insets(0, 0, 0, 0));
                // tlb.setOpaque(false);
                close.setBorder(null);
+               up.setMargin(new Insets(0, 0, 0, 0));
+               down.setMargin(new Insets(0, 0, 0, 0));
+               up.setBorder(null);
+               down.setBorder(null);
+               up.addActionListener(new UpButtonListener());
+               down.addActionListener(new DownButtonListener());
         tlb.setFloatable(false);
+               tlb.add(up);
+               tlb.add(down);
                tlb.add(close);
                close.addActionListener(new CloseButtonListener());
                setToolBar(tlb);
@@ -61,6 +71,14 @@ public abstract class SidePaneComponent extends SimpleInternalFrame {
        public void hideAway() {
                manager.hideComponent(this);
        }
+       
+       public void moveUp() {
+               manager.moveUp(this);
+       }
+       
+       public void moveDown() {
+               manager.moveDown(this);
+       }
 
        /**
         * Used by SidePaneManager only, to keep track of visibility.
@@ -111,4 +129,16 @@ public abstract class SidePaneComponent extends SimpleInternalFrame {
                        hideAway();
                }
        }
+       
+       class UpButtonListener implements ActionListener {
+               public void actionPerformed(ActionEvent e) {
+                       moveUp();
+               }
+       }
+       
+       class DownButtonListener implements ActionListener {
+               public void actionPerformed(ActionEvent e) {
+                       moveDown();
+               }
+       }
 }
index 972a38e..13c0191 100644 (file)
@@ -1,4 +1,4 @@
-/*  Copyright (C) 2003-2011 JabRef contributors.
+/*  Copyright (C) 2003-2015 JabRef contributors.
     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
@@ -37,6 +37,7 @@ public class SidePaneManager {
        SidePane sidep;
 
        Map<String, SidePaneComponent> components = new LinkedHashMap<String, SidePaneComponent>();
+       Map<SidePaneComponent, String> componentNames = new HashMap<SidePaneComponent, String>();
 
        List<SidePaneComponent> visible = new LinkedList<SidePaneComponent>();
 
@@ -104,6 +105,7 @@ public class SidePaneManager {
 
        public synchronized void register(String name, SidePaneComponent comp) {
         components.put(name, comp);
+        componentNames.put(comp, name);
        }
 
        public synchronized void registerAndShow(String name, SidePaneComponent comp) {
@@ -115,6 +117,10 @@ public class SidePaneManager {
                if (!visible.contains(component)) {
                        // Put the new component at the top of the group
                        visible.add(0, component);
+                       
+                       // Sort the visible components by their preferred position
+                       Collections.sort(visible, new PreferredIndexSort());
+                       
                        updateView();
                        component.componentOpening();
                }
@@ -123,6 +129,10 @@ public class SidePaneManager {
     public SidePaneComponent getComponent(String name) {
         return components.get(name);
     }
+       
+       public String getComponentName(SidePaneComponent comp) {
+               return componentNames.get(comp);
+       }
 
     public synchronized void hideComponent(SidePaneComponent comp) {
                if (visible.contains(comp)) {
@@ -143,7 +153,97 @@ public class SidePaneManager {
        }
     }
 
+       private Map<String, Integer> getPreferredPositions() {
+               Map<String, Integer> preferredPositions = new HashMap<String, Integer>();
+               
+               String[] componentNames = Globals.prefs.getStringArray("sidePaneComponentNames");
+               String[] componentPositions = Globals.prefs.getStringArray("sidePaneComponentPreferredPositions");
+               
+               for (int i = 0; i < componentNames.length; ++i) {
+                       try {
+                               preferredPositions.put(componentNames[i], Integer.parseInt(componentPositions[i]));
+                       }
+                       catch (NumberFormatException e) {
+                               // Invalid integer format, ignore
+                       }
+               }
+               
+               return preferredPositions;
+       }
+       
+       private void updatePreferredPositions() {
+               Map<String, Integer> preferredPositions = getPreferredPositions();
+               
+               // Update the preferred positions of all visible components
+               int index = 0;
+               for (SidePaneComponent comp : visible) {
+                       String componentName = getComponentName(comp);
+                       preferredPositions.put(componentName, index++);
+               }
+               
+               // Split the map into a pair of parallel String arrays suitable for storage
+               String[] componentNames = preferredPositions.keySet().toArray(new String[0]);
+               String[] componentPositions = new String[preferredPositions.size()];
+               
+               for (int i = 0; i < componentNames.length; ++i) {
+                       componentPositions[i] = preferredPositions.get(componentNames[i]).toString();
+               }
+               
+               Globals.prefs.putStringArray("sidePaneComponentNames", componentNames);
+               Globals.prefs.putStringArray("sidePaneComponentPreferredPositions", componentPositions);
+       }
+       
+       // Helper class for sorting visible componenys based on their preferred position
+       private class PreferredIndexSort implements Comparator<SidePaneComponent> {
+               private Map<String, Integer> preferredPositions;
+               
+               public PreferredIndexSort() {
+                       preferredPositions = getPreferredPositions();
+               }
+               
+               @Override
+               public int compare(SidePaneComponent comp1, SidePaneComponent comp2) {
+                       String comp1Name = getComponentName(comp1);
+                       String comp2Name = getComponentName(comp2);
+                       
+                       // Manually provide default values, since getOrDefault() doesn't exist prior to Java 8
+                       int pos1 = (preferredPositions.containsKey(comp1Name) ? preferredPositions.get(comp1Name) : 0);
+                       int pos2 = (preferredPositions.containsKey(comp2Name) ? preferredPositions.get(comp2Name) : 0);
+                       
+                       return Integer.compare(pos1, pos2);
+               }
+       }
+       
+       public synchronized void moveUp(SidePaneComponent comp) {
+               if (visible.contains(comp)) {
+                       int currIndex = visible.indexOf(comp);
+                       if (currIndex > 0) {
+                               int newIndex = currIndex - 1; 
+                               visible.remove(currIndex);
+                               visible.add(newIndex, comp);
+                               
+                               updatePreferredPositions();
+                               updateView();
+                       }
+               }
+       }
+       
+       public synchronized void moveDown(SidePaneComponent comp) {
+               if (visible.contains(comp)) {
+                       int currIndex = visible.indexOf(comp);
+                       if (currIndex < (visible.size() - 1)) {
+                               int newIndex = currIndex + 1;
+                               visible.remove(currIndex);
+                               visible.add(newIndex, comp);
+                               
+                               updatePreferredPositions();
+                               updateView();
+                       }
+               }
+       }
+       
        public synchronized void unregisterComponent(String name) {
+               componentNames.remove(components.get(name));
            components.remove(name);
        }
 
index fa00745..b8f8908 100644 (file)
@@ -55,7 +55,11 @@ import ca.odell.glazedlists.BasicEventList;
 import ca.odell.glazedlists.SortedList;
 
 public class FileActions {
-
+       
+       public enum DatabaseSaveType {
+               DEFAULT, PLAIN_BIBTEX
+       }
+       
     private static Pattern refPat = Pattern.compile("(#[A-Za-z]+#)"); // Used to detect string references in strings
     private static BibtexString.Type previousStringType;
 
@@ -357,7 +361,7 @@ public class FileActions {
      * @return A List containing warnings, if any.
      */
     public static SaveSession savePartOfDatabase(BibtexDatabase database, MetaData metaData,
-            File file, JabRefPreferences prefs, BibtexEntry[] bes, String encoding) throws SaveException {
+            File file, JabRefPreferences prefs, BibtexEntry[] bes, String encoding, DatabaseSaveType saveType) throws SaveException {
 
         TreeMap<String, BibtexEntryType> types = new TreeMap<String, BibtexEntryType>(); // Map
         // to
@@ -382,9 +386,11 @@ public class FileActions {
             // Define our data stream.
             VerifyingWriter fw = session.getWriter();
 
-            // Write signature.
-            writeBibFileHeader(fw, encoding);
-
+            if (saveType != DatabaseSaveType.PLAIN_BIBTEX) {
+               // Write signature.
+               writeBibFileHeader(fw, encoding);
+            }
+            
             // Write preamble if there is one.
             writePreamble(fw, database.getPreamble());
 
@@ -423,7 +429,7 @@ public class FileActions {
             }
 
             // Write meta data.
-            if (metaData != null) {
+            if (saveType != DatabaseSaveType.PLAIN_BIBTEX && metaData != null) {
                 metaData.writeMetaData(fw);
             }
 
index bcc1f41..e1186d6 100644 (file)
@@ -218,7 +218,7 @@ public class SaveDatabaseAction extends AbstractWorker {
                         Globals.prefs, false, false, encoding, false);
             else
                 session = FileActions.savePartOfDatabase(panel.database(), panel.metaData(), file,
-                        Globals.prefs, panel.getSelectedEntries(), encoding);
+                        Globals.prefs, panel.getSelectedEntries(), encoding, FileActions.DatabaseSaveType.DEFAULT);
 
         } catch (UnsupportedCharsetException ex2) {
             JOptionPane.showMessageDialog(frame, Globals.lang("Could not save file. "
index da26695..da707ea 100644 (file)
@@ -89,9 +89,11 @@ public class FileLinksUpgradeWarning implements PostOpenAction {
 
         JPanel message = new JPanel();
         DefaultFormBuilder b = new DefaultFormBuilder(new FormLayout("left:pref", ""), message);
-        b.append(new JLabel("<html>" + Globals.lang("This database was written using an older version of JabRef.") + "<br>" + Globals.lang("The current version features a new way of handling links to external files.<br>"
-                + "To take advantage of this, your links must be changed into the new format, and<br>"
-                + "JabRef must be configured to show the new links.") + "<p>" + Globals.lang("Do you want JabRef to do the following operations?") + "</html>"));
+        // Keep the formatting of these lines. Otherwise, strings have to be translated again.
+        // See updated JabRef_en.properties modifications by python syncLang.py -s -u
+        b.append(new JLabel("<html>" + Globals.lang("This database was written using an older version of JabRef.") + "<br>"
+                + Globals.lang("The current version features a new way of handling links to external files.<br>To take advantage of this, your links must be changed into the new format, and<br>JabRef must be configured to show the new links.") + "<p>"
+                + Globals.lang("Do you want JabRef to do the following operations?") + "</html>"));
         b.nextLine();
         if (offerChangeSettings) {
             b.append(changeSettings);
index c9254ef..ffae2ef 100644 (file)
@@ -20,11 +20,14 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
 
 import javax.swing.JPanel;
 
 import net.sf.jabref.BibtexEntry;
+import net.sf.jabref.DuplicateCheck;
 import net.sf.jabref.GUIGlobals;
 import net.sf.jabref.OutputPrinter;
 
@@ -49,6 +52,8 @@ public class DBLPFetcher implements EntryFetcher {
        public boolean processQuery(String query, ImportInspector inspector,
                        OutputPrinter status) {
 
+               final HashMap<String, Boolean> bibentryKnown = new HashMap<String, Boolean>();
+
                boolean res = false;
                this.query = query;
 
@@ -64,7 +69,7 @@ public class DBLPFetcher implements EntryFetcher {
                //System.out.println(page);
                String[] lines = page.split("\n");
                List<String> bibtexUrlList = new ArrayList<String>();
-               for(String line : lines) {
+               for(final String line : lines) {
                        if( line.startsWith("\"url\"") ) {
                                String addr = line.replace("\"url\":\"", "");
                                addr = addr.substring(0, addr.length()-2);
@@ -74,6 +79,18 @@ public class DBLPFetcher implements EntryFetcher {
                }
 
 
+               // we save the duplicate check threshold
+               // we need to overcome the "smart" approach of this heuristic
+               // and we will set it back afterwards, so maybe someone is happy again
+               double saveThreshold = DuplicateCheck.duplicateThreshold;
+               DuplicateCheck.duplicateThreshold = Double.MAX_VALUE;
+
+               // 2014-11-08
+               // DBLP now shows the BibTeX entry using ugly HTML entities
+               // but they also offer the download of a bib file
+               // we find this in the page which we get from "url"
+               // and this bib file is then in "biburl"
+
                int count = 1;
                for(String urlStr : bibtexUrlList) {
                        if( ! shouldContinue ) {
@@ -81,21 +98,46 @@ public class DBLPFetcher implements EntryFetcher {
                        }
 
                        final URL bibUrl = new URL(urlStr);
-                       String bibtexPage = readFromURL(bibUrl);
-                       //System.out.println(bibtexPage);
 
-                       List<BibtexEntry> bibtexList = helper.getBibTexFromPage(bibtexPage);
+                       final String bibtexHTMLPage = readFromURL(bibUrl);
+
+                       final String[] htmlLines = bibtexHTMLPage.split("\n");
+
+
+                       for(final String line : htmlLines) {
+                               if( line.contains("biburl") ) {
+                                       int sidx = line.indexOf("{");
+                                       int eidx = line.indexOf("}");
+                                       // now we take everything within the curley braces
+                                       String bibtexUrl = line.substring(sidx+1, eidx);
+
+                                       // we do not access dblp.uni-trier.de as they will complain
+                                       bibtexUrl = bibtexUrl.replace("dblp.uni-trier.de", "www.dblp.org");
 
-                       for(BibtexEntry bibtexEntry : bibtexList ) {
-                               inspector.addEntry(bibtexEntry);
-                               if( ! shouldContinue ) {
-                                       break;
+                                       final URL bibFileURL = new URL(bibtexUrl);
+                                       //System.out.println("URL:|"+bibtexUrl+"|");
+                                       final String bibtexPage = readFromURL(bibFileURL);
+
+                                       Collection<BibtexEntry> bibtexEntries = BibtexParser.fromString(bibtexPage);
+
+                                       for(BibtexEntry be : bibtexEntries) {
+
+                                               if( ! bibentryKnown.containsKey( be.getCiteKey() ) ) {
+
+                                                       inspector.addEntry(be);
+                                                       bibentryKnown.put(be.getCiteKey(), true);
+                                               }
+
+                                       }
                                }
                        }
-                       inspector.setProgress(count, bibtexUrlList.size());
+
+                       inspector.setProgress(count, bibtexUrlList.size());
                        count++;
                }
 
+               DuplicateCheck.duplicateThreshold = saveThreshold;
+
                // everything went smooth
                res = true;
 
index 1eef98e..063f896 100644 (file)
@@ -78,7 +78,7 @@ public class DBLPHelper {
                                endIdx);
                entry1 = cleanEntry(entry1);
                bibtexList.add(BibtexParser.singleFromString(entry1));
-               //System.out.println("'" + entry1 + "'");
+               // System.out.println("'" + entry1 + "'");
 
                // let's see whether there is another entry (crossref)
                tmpStr = tmpStr
@@ -96,8 +96,10 @@ public class DBLPHelper {
                return bibtexList;
        }
 
+
+
        private String cleanEntry(final String bibEntry) {
-        return bibEntry.replaceFirst("<a href=\".*\">DBLP</a>", "DBLP");
+               return bibEntry.replaceFirst("<a href=\".*\">DBLP</a>", "DBLP");
        }
 
 }
diff --git a/src/main/java/net/sf/jabref/util/GoogleUrlCleaner.java b/src/main/java/net/sf/jabref/util/GoogleUrlCleaner.java
new file mode 100644 (file)
index 0000000..d356348
--- /dev/null
@@ -0,0 +1,81 @@
+/*  Copyright (C) 2003-2013 JabRef contributors.
+    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.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+package net.sf.jabref.util;
+
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLDecoder;
+
+/**
+ * Class containing method(s) for cleaning URL returned by Google search.
+ * E.g. If you search for the "The String-to-String Correction Problem", Google
+ * will return a list of web pages associated with that text. If you copy any 
+ * link that search returned, you will have access to the link "enriched"
+ * with many meta data. 
+ * E.g. instead link http://dl.acm.org/citation.cfm?id=321811
+ * in your clipboard you will have this link:
+ *  https://www.google.hr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CC8QFjAA&url=http%3A%2F%2Fdl.acm.org%2Fcitation.cfm%3Fid%3D321811&ei=L2_RUcj6HsfEswa7joGwBw&usg=AFQjCNEBJPUimu-bAns6lSLe-kszz4AiGA&sig2=tj9c5x62ioFHkQTKfwkj0g&bvm=bv.48572450,d.Yms
+ *
+ * Using methods of this class, "dirty" link will be cleaned.
+ *
+ * Created by Krunoslav Zubrinic, July 2013.
+ */
+public class GoogleUrlCleaner {
+
+/*
+    public static void main(String[] args) {
+        System.out.println(cleanUrl("https://www.google.hr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CC0QFjAA&url=http%3A%2F%2Fdl.acm.org%2Fcitation.cfm%3Fid%3D321811&ei=gHDRUa-IKobotQbMy4GAAg&usg=AFQjCNEBJPUimu-bAns6lSLe-kszz4AiGA&sig2=DotF0pIZD8OhjDcSHPlBbQ"));
+        System.out.println(cleanUrl("http://dl.acm.org/citation.cfm?id=321811"));
+        System.out.println(cleanUrl("test text"));
+        System.out.println(cleanUrl(" "));
+        System.out.println(cleanUrl(""));
+        System.out.println(cleanUrl(null));
+   }
+*/
+
+    // clean Google URL
+    public static String cleanUrl(String dirty) {
+        if (dirty==null || dirty.length()==0)
+            return dirty;
+        try{
+            URL u = new URL(dirty);
+            // read URL parameters
+            String query = u.getQuery();
+            // if there is no parameters
+            if (query==null)
+                return dirty;
+            // split parameters
+            String[] pairs = query.split("&");
+            if (pairs==null)
+                return dirty;
+            for (String pair : pairs) {
+                int idx = pair.indexOf("=");
+                // "clean" url is decoded value of "url" parameter
+                if (pair.substring(0, idx).equals("url"))
+                    return URLDecoder.decode(pair.substring(idx + 1), "UTF-8");
+            }
+        }
+        catch(MalformedURLException e){
+            return dirty;
+        }
+        catch(UnsupportedEncodingException e){
+            return dirty;
+        }
+        return dirty;
+    }
+
+}
index 46c4e61..560a043 100644 (file)
@@ -63,6 +63,7 @@
         Nathan Dunn,
         E. Hakan Duran,
         Brian Van Essen,
+        Michael Falkenthal,
         Alexis Gallagher,
         David Gleich,
         Eduardo Roberto Greco,
@@ -88,6 +89,7 @@
         Ambrogio Oliva,
         Brian Quistorff,
         Stephan Rave,
+        Adam Rehn,
         John Relph,
         Hannes Restel,
         Moritz Ringler,
         Mattias Ulbrich,
         David Weitzman,
         Seb Wills,
-        John Zedlewski</p>
+        John Zedlewski,
+        Krunoslav Zubrinic</p>
 
         <h2>Thanks to:</h2>
 
index b31fe62..11f54f7 100644 (file)
@@ -54,6 +54,7 @@
         Nathan Dunn,
         E. Hakan Duran,
         Brian Van Essen,
+        Michael Falkenthal,
         Alexis Gallagher,
         David Gleich,
         Eduardo Roberto Greco,
@@ -79,6 +80,7 @@
         Ambrogio Oliva,
         Brian Quistorff,
         Stephan Rave,
+        Adam Rehn,
         John Relph,
         Hannes Restel,
         Moritz Ringler,
@@ -97,7 +99,8 @@
         Mattias Ulbrich,
         David Weitzman,
         Seb Wills,
-        John Zedlewski</p>
+        John Zedlewski,
+        Krunoslav Zubrinic</p>
 
         <h2>Tak til:</h2>
 
index 353c8bc..db03f8a 100644 (file)
@@ -53,6 +53,7 @@
         Nathan Dunn,
         E. Hakan Duran,
         Brian Van Essen,
+        Michael Falkenthal,
         Alexis Gallagher,
         David Gleich,
         Eduardo Roberto Greco,
@@ -78,6 +79,7 @@
         Ambrogio Oliva,
         Brian Quistorff,
         Stephan Rave,
+        Adam Rehn,
         John Relph,
         Hannes Restel,
         Moritz Ringler,
@@ -96,7 +98,8 @@
         Mattias Ulbrich,
         David Weitzman,
         Seb Wills,
-        John Zedlewski</p>
+        John Zedlewski,
+        Krunoslav Zubrinic</p>
 
         <h2>Dank an:</h2>
 
index 8b274a2..f795b79 100644 (file)
@@ -62,6 +62,7 @@
         Nathan Dunn,
         E. Hakan Duran,
         Brian Van Essen,
+        Michael Falkenthal,
         Alexis Gallagher,
         David Gleich,
         Eduardo Roberto Greco,
@@ -87,6 +88,7 @@
         Ambrogio Oliva,
         Brian Quistorff,
         Stephan Rave,
+        Adam Rehn,
         John Relph,
         Hannes Restel,
         Moritz Ringler,
         Mattias Ulbrich,
         David Weitzman,
         Seb Wills,
-        John Zedlewski</p>
+        John Zedlewski,
+        Krunoslav Zubrinic</p>
 
         <h2>Remerciements &agrave;&nbsp;:</h2>
 
index d84e34d..91b0316 100644 (file)
@@ -54,6 +54,7 @@
         Nathan Dunn,
         E. Hakan Duran,
         Brian Van Essen,
+        Michael Falkenthal,
         Alexis Gallagher,
         David Gleich,
         Eduardo Roberto Greco,
@@ -79,6 +80,7 @@
         Ambrogio Oliva,
         Brian Quistorff,
         Stephan Rave,
+        Adam Rehn,
         John Relph,
         Hannes Restel,
         Moritz Ringler,
index 54c197d..f0f8ed4 100644 (file)
@@ -53,6 +53,7 @@
         Nathan Dunn,
         E. Hakan Duran,
         Brian Van Essen,
+        Michael Falkenthal,
         Alexis Gallagher,
         David Gleich,
         Eduardo Roberto Greco,
@@ -78,6 +79,7 @@
         Ambrogio Oliva,
         Brian Quistorff,
         Stephan Rave,
+        Adam Rehn,
         John Relph,
         Hannes Restel,
         Moritz Ringler,
@@ -96,7 +98,8 @@
         Mattias Ulbrich,
         David Weitzman,
         Seb Wills,
-        John Zedlewski</p>
+        John Zedlewski,
+        Krunoslav Zubrinic</p>
 
         <h2>以下の方々に感謝します:</h2>
 
index d5af4b8..943fb31 100644 (file)
     <ul>
         <li><strong>urldate<br /></strong> 最後にページを訪れた日付。</li>
     </ul><br />
-     *) は、JabRefによって直接サポートされていません。<br />
+     * のついたフィールドは、JabRefは直接サポートしていません。<br />
      <br />
+
+    <h2>フィールドに関するヒント</h2>
+    <p>
+    組織名は、<code>{}</code>括弧の中に置きます。組織名に省略表記がある場合、その省略表記も<code>{}</code>括弧の中に置きます。例:<code>{The Attributed Graph Grammar System ({AGG})}</code>.</p>
+
+    <h2>さらに詳しい情報</h2>
+    <ul>
+    <li>
+    BibTeXに関するヒント: <a href="http://sandilands.info/sgordon/node/488">Recommended BibTeX Format</a>
+    </li>
+    </ul>
+
 </body>
 </html>
index fb001e8..841a173 100644 (file)
@@ -42,7 +42,7 @@
       <li><a href="StringEditorHelp.html">文字列エディタ</a></li>
       <li><a href="DatabaseProperties.html">データベース特性ウィンドウ</a></li>
       <li><a href="PreviewHelp.html">項目プレビューの設定</a></li>
-      <li><a href="LabelPatterns.html">BibTeXé\8dµç\94\9fæ\88\90æ©\9fæ§\8bã\81®è\87ªä½\9c</a></li>
+      <li><a href="LabelPatterns.html">BibTeXé\8dµç\94\9fæ\88\90æ\96¹æ³\95ã\81®èª¿æ\95´</a></li>
       <li><a href="CustomEntriesHelp.html">項目型の自作</a></li>
       <li><a href="GeneralFields.html">汎用フィールドの個人設定</a></li>
       <li><a href="Plugin.html">プラグインを使用してJabRefを拡張する</a></li>
index 555be8a..9ff5c3f 100644 (file)
@@ -6,7 +6,7 @@
 
 <body>
 
-    <h1>BibTeX<ruby><rb>é\8dµ</rb><rp>(</rp><rt>ã\82­ã\83¼</rt><rp>)</rp></ruby>ç\94\9fæ\88\90æ©\9fæ§\8bã\81®è\87ªä½\9c</h1>
+    <h1>BibTeX<ruby><rb>é\8dµ</rb><rp>(</rp><rt>ã\82­ã\83¼</rt><rp>)</rp></ruby>ç\94\9fæ\88\90æ\96¹æ³\95ã\81®èª¿æ\95´</h1>
 
     <p>JabRef設定の「BibTeX鍵の生成」タブでは、BibTeXラベルの自動生成に使用されるフィールドを設定することができます。パターンは、標準的な項目型それぞれに対して設定することができます。</p>
 
 
         <li><b>[<code>auth.etal</code>]</b>: 第1著者の姓の後に、著者が2名の時は第2著者の姓、著者が3名以上の時は「.etal」。<br /></li>
 
+        <li><b>[<code>authEtAl</code>]</b>: 第1著者の姓の後に、著者が2名の時は第2著者の姓、著者が3名以上の時は「EtAl」。これは、<code>auth.etal</code>に近いですが、著者同士が「.」によって区切られないことと、著者が3名以上の時に「.etal」ではなく「Etal」が付け加えられるところが違います。<br /></li>
+
         <li><b>[<code>authshort</code>]</b>: 著者1名の時はその姓、著者2名以上の時は、3名までの著者の姓の最初の文字。4名以上の著者がいる時には、その後に+文字。<br /></li>
 
+       <li><b>[<code>authForeIni</code>]</b>: 第1著者の名のイニシャル。<br /></li>
+
+       <li><b>[<code>authorLastForeIni</code>]</b>: 最後の著者の名のイニシャル。<br /></li>
+
     </ul>
 
     <p><b>《註》</b>(編集書籍など)著者がいない場合には、上記の<b><code>[auth...]</code></b>マーカーはすべて、編者を(ある場合には)代わりに使用します。したがって、著者のいない書籍の編者は、ラベル生成用には著者として取り扱われます。この挙動を望まない、即ち著者がいない場合は何も出力しないマーカーが必要な場合には、上記のコードにおいて<b><code>auth</code></b>の代わりに<b><code>pureauth</code></b>を使用してください。例:<b><code>[pureauth]</code></b>や<b><code>[pureauthors3]</code></b>など。</p>
 
         <li><b>[<code>edtrshort</code>]</b>: 編者1名の時はその姓、編者2名以上の時は、3名までの編者の姓の最初の文字。4名以上の編者がいる時には、その後に+文字。<br /></li>
 
+       <li><b>[<code>edtrForeIni</code>]</b>: 第1編者の名のイニシャル。<br /></li>
+
+       <li><b>[<code>editorLastForeIni</code>]</b>: 最後の編者の名のイニシャル。<br /></li>
+
         <li><b>[<code>firstpage</code>]</b>: 発行物の最初のページ番号(注意:bibtexは<code>7,41,73--97</code>あるいは<code>43+</code>という表記をするので、pagesフィールド中の最小のページ番号を返します)<br /></li>
 
         <li><b>[<code>keywordN</code>]</b>: "keywords"フィールドのN番目のキーワード。キーワードがコンマかセミコロンで区切られていると仮定します。<br /></li>
index 2758738..4dfb550 100644 (file)
@@ -14,7 +14,7 @@
    inkscape:export-xdpi="90.000000"
    inkscape:export-filename="splash.png"
    sodipodi:docname="splash-beta.svg"
-   inkscape:version="0.48.4 r9939"
+   inkscape:version="0.91 r13725"
    sodipodi:version="0.32"
    id="svg2138"
    height="432"
    inkscape:output_extension="org.inkscape.output.svg.inkscape"
    version="1.1">
   <sodipodi:namedview
-     inkscape:window-y="-3"
-     inkscape:window-x="33"
-     inkscape:window-height="880"
-     inkscape:window-width="1512"
-     inkscape:current-layer="layer2"
+     inkscape:window-y="0"
+     inkscape:window-x="0"
+     inkscape:window-height="1155"
+     inkscape:window-width="1920"
+     inkscape:current-layer="layer1"
      inkscape:document-units="px"
      inkscape:cy="225.8697"
      inkscape:cx="105.10531"
      style="display:inline">
     <image
        xlink:href="splash-release.svg"
-       style="display:inline"
-       y="-0.86970043"
-       x="-0.89468384"
-       id="image3653"
+       width="576"
        height="432"
-       width="576" />
+       id="image3653"
+       x="-0.89468384"
+       y="-0.86970043"
+       style="display:inline" />
   </g>
   <g
      transform="translate(-77.5,-170.36218)"
-     inkscape:label="beta"
+     inkscape:label="beta 2"
      inkscape:groupmode="layer"
      id="layer1"
      style="display:inline">
        inkscape:export-ydpi="75"
        inkscape:export-xdpi="75"
        inkscape:export-filename="/home/alver/jabref/jabref/src/images/splash.png"
-       transform="matrix(0.9688007,-0.2478411,0.2478411,0.9688007,-87.20276,118.59483)"
-       style="font-size:56px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#f91616;fill-opacity:0.65789472;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans Bold"
+       transform="matrix(0.9688007,-0.2478411,0.2478411,0.9688007,-139.20276,134.59483)"
+       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:56px;line-height:100%;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f91616;fill-opacity:0.65789472;stroke:none"
        id="flowRoot2745"
        xml:space="preserve"><flowRegion
          id="flowRegion2747"><rect
-           style="font-size:56px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#f91616;fill-opacity:0.65789472;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans Bold"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:56px;line-height:100%;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f91616;fill-opacity:0.65789472"
            y="470.36218"
            x="482"
-           height="68"
-           width="164"
+           height="99.498024"
+           width="246.77605"
            id="rect2749" /></flowRegion><flowPara
-         id="flowPara2751">beta</flowPara></flowRoot>  </g>
+         id="flowPara2751">beta 2</flowPara></flowRoot>  </g>
 </svg>
index 0d04c45..d9a1e3e 100644 (file)
Binary files a/src/main/resources/images/splash.png and b/src/main/resources/images/splash.png differ
index 1d00339..a96cbc9 100644 (file)
@@ -1675,3 +1675,25 @@ Wrap_fields_as_ver_2.9.2=
 Move_to_group=
 
 Journal_file_not_found=
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=
index b3d76f5..a203e9d 100644 (file)
@@ -2432,3 +2432,25 @@ Wrap_fields_as_ver_2.9.2=
 Move_to_group=
 
 Journal_file_not_found=
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=
index 4ec7c96..d717f07 100644 (file)
@@ -2420,3 +2420,25 @@ Wrap_fields_as_ver_2.9.2=Wrap_fields_as_ver_2.9.2
 Move_to_group=Move_to_group
 
 Journal_file_not_found=Journal_file_not_found
+
+Show_gridlines=Show_gridlines
+Table_row_height_padding=Table_row_height_padding
+Marked_entries_as_printed=Marked_entries_as_printed
+Could_not_apply_changes.=Could_not_apply_changes.
+Deprecated_fields=Deprecated_fields
+Show_deprecated_bibtex_fields=Show_deprecated_bibtex_fields
+If_possible,_clean_URL_that_Google_search_returned=If_possible,_clean_URL_that_Google_search_returned
+Save_selected_as_plain_BibTeX_...=Save_selected_as_plain_BibTeX_...
+Hide/show_toolbar=Hide/show_toolbar
+Show_printed_status=Show_printed_status
+Show_read_status=Show_read_status
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')
+Toogle_print_status=Toogle_print_status
+Printed=Printed
+Clear_read_status=Clear_read_status
+No_read_status_information=No_read_status_information
+Set_read_status_to_read=Set_read_status_to_read
+Read_status_read=Read_status_read
+Set_read_status_to_skimmed=Set_read_status_to_skimmed
+Read_status_skimmed=Read_status_skimmed
+Read_status=Read_status
index 3d1fb2c..57d5e71 100644 (file)
@@ -1567,3 +1567,25 @@ Wrap_fields_as_ver_2.9.2=
 Move_to_group=
 
 Journal_file_not_found=
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=
index ad90ed9..e30c848 100644 (file)
@@ -1613,3 +1613,25 @@ Wrap_fields_as_ver_2.9.2=Changement_de_ligne_dans_les_champs_comme_dans_la_versi
 Move_to_group=D\u00e9plac\u00e9_vers_le_groupe
 
 Journal_file_not_found=
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=
index 67134c5..cd8ca19 100644 (file)
@@ -1586,3 +1586,25 @@ Wrap_fields_as_ver_2.9.2=
 Move_to_group=
 
 Journal_file_not_found=
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=
index b5ab3c0..fb3ac1b 100644 (file)
@@ -1697,3 +1697,25 @@ Wrap_fields_as_ver_2.9.2=
 Move_to_group=
 
 Journal_file_not_found=
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=
index 226e040..1b9460d 100644 (file)
@@ -2417,3 +2417,25 @@ Wrap_fields_as_ver_2.9.2=
 Move_to_group=
 
 Journal_file_not_found=
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=
index bdbfca3..451dd14 100644 (file)
@@ -2418,3 +2418,25 @@ Wrap_fields_as_ver_2.9.2=
 Move_to_group=
 
 Journal_file_not_found=
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=
index a994f72..64fa0e7 100644 (file)
@@ -2883,3 +2883,25 @@ Wrap_fields_as_ver_2.9.2=
 Move_to_group=
 
 Journal_file_not_found=
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=
index 281dd7e..4ccdc60 100644 (file)
@@ -1582,3 +1582,25 @@ Wrap_fields_as_ver_2.9.2=
 Move_to_group=
 
 Journal_file_not_found=
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=
index 7b3c61a..4dcfd9b 100644 (file)
@@ -2420,3 +2420,25 @@ Wrap_fields_as_ver_2.9.2=Сворачивать_поля_как_в_верс._2.9
 Move_to_group=переместить_в_группу
 
 Journal_file_not_found=Файл_журнала_не_найден
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=
index 57d8db7..1b29339 100644 (file)
@@ -1604,3 +1604,25 @@ Wrap_fields_as_ver_2.9.2=Alanlar\u0131_s\u00fcr\u00fcm_2.9.2_gibi_sarmala
 Move_to_group=gruba_ta\u015f\u0131
 
 Journal_file_not_found=G\u00fcnl\u00fck_dosyas\u0131_bulunamad\u0131
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=
index 39c71f1..cf5b0a2 100644 (file)
@@ -2414,3 +2414,25 @@ Wrap_fields_as_ver_2.9.2=
 Move_to_group=
 
 Journal_file_not_found=
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=
index 3ab9dd8..722c8fa 100644 (file)
@@ -2407,3 +2407,25 @@ Wrap_fields_as_ver_2.9.2=
 Move_to_group=
 
 Journal_file_not_found=
+
+Clear_read_status=
+Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=
+Could_not_apply_changes.=
+Deprecated_fields=
+Hide/show_toolbar=
+If_possible,_clean_URL_that_Google_search_returned=
+Marked_entries_as_printed=
+No_read_status_information=
+Printed=
+Read_status=
+Read_status_read=
+Read_status_skimmed=
+Save_selected_as_plain_BibTeX_...=
+Set_read_status_to_read=
+Set_read_status_to_skimmed=
+Show_deprecated_bibtex_fields=
+Show_gridlines=
+Show_printed_status=
+Show_read_status=
+Table_row_height_padding=
+Toogle_print_status=