Imported Upstream version 2.9~beta2+ds upstream/2.9_beta2+ds
authorgregor herrmann <gregoa@debian.org>
Mon, 19 Nov 2012 15:44:02 +0000 (16:44 +0100)
committergregor herrmann <gregoa@debian.org>
Mon, 19 Nov 2012 15:44:02 +0000 (16:44 +0100)
179 files changed:
.classpath [new file with mode: 0644]
.gitignore [new file with mode: 0644]
.idea/.name [new file with mode: 0644]
.idea/ant.xml [new file with mode: 0644]
.idea/compiler.xml [new file with mode: 0644]
.idea/copyright/profiles_settings.xml [new file with mode: 0644]
.idea/encodings.xml [new file with mode: 0644]
.idea/libraries/jersey.xml [new file with mode: 0644]
.idea/libraries/lib.xml [new file with mode: 0644]
.idea/libraries/oo.xml [new file with mode: 0644]
.idea/libraries/plugin.xml [new file with mode: 0644]
.idea/libraries/sciplore.xml [new file with mode: 0644]
.idea/misc.xml [new file with mode: 0644]
.idea/modules.xml [new file with mode: 0644]
.idea/scopes/scope_settings.xml [new file with mode: 0644]
.idea/uiDesigner.xml [new file with mode: 0644]
.idea/vcs.xml [new file with mode: 0644]
.idea/workspace.xml [new file with mode: 0644]
.project [new file with mode: 0644]
JabRef - MrDlib.userlibraries [deleted file]
build.gradle [deleted file]
build.number
build.xml
buildlib/jarbundler-2.2.0.jar [new file with mode: 0644]
jabref.ebuild [new file with mode: 0644]
osx/JavaApplicationStub [new file with mode: 0644]
osx/OSXAdapter.class [new file with mode: 0644]
src/Jabref.iml [new file with mode: 0644]
src/help/ACMPortalHelp.html
src/help/About.html
src/help/Contents.html
src/help/DOItoBibTeXHelp.html [new file with mode: 0644]
src/help/DiVAtoBibTeXHelp.html [new file with mode: 0644]
src/help/GoogleScholarHelp.html [new file with mode: 0644]
src/help/IEEEXploreHelp.html
src/help/ISBNtoBibTeXHelp.html
src/help/RevisionHistory.html
src/help/da/About.html
src/help/de/About.html
src/help/fr/About.html
src/help/fr/Contents.html
src/help/fr/DOItoBibTeXHelp.html [new file with mode: 0644]
src/help/fr/GoogleScholarHelp.html [new file with mode: 0644]
src/help/fr/ISBNtoBibTeXHelp.html [new file with mode: 0644]
src/help/fr/RevisionHistory.html
src/help/fr/SpecialFieldsHelp.html [new file with mode: 0644]
src/help/in/About.html
src/help/ja/About.html
src/help/jgoodies.html
src/images/JabRef-Logo.icns
src/images/JabRef-icon-mac.svg [new file with mode: 0644]
src/images/reference_list.xcf [new file with mode: 0644]
src/java/net/sf/jabref/AdvancedTab.java
src/java/net/sf/jabref/BasePanel.java
src/java/net/sf/jabref/BibLatexEntryTypes.java
src/java/net/sf/jabref/BibtexEntryType.java
src/java/net/sf/jabref/ContentSelectorDialog2.java
src/java/net/sf/jabref/EntryTypeDialog.java
src/java/net/sf/jabref/ExternalTab.java
src/java/net/sf/jabref/FindUnlinkedFilesDialog.java
src/java/net/sf/jabref/GUIGlobals.java
src/java/net/sf/jabref/GeneralTab.java
src/java/net/sf/jabref/Globals.java
src/java/net/sf/jabref/JabRef.java
src/java/net/sf/jabref/JabRefFrame.java
src/java/net/sf/jabref/JabRefMain.java
src/java/net/sf/jabref/JabRefPreferences.java
src/java/net/sf/jabref/PrefsDialog3.java
src/java/net/sf/jabref/SearchManager2.java
src/java/net/sf/jabref/SidePaneComponent.java
src/java/net/sf/jabref/SidePaneHeader.java [deleted file]
src/java/net/sf/jabref/TableColumnsTab.java
src/java/net/sf/jabref/Util.java
src/java/net/sf/jabref/bst/.gitignore [new file with mode: 0644]
src/java/net/sf/jabref/bst/Bst.g [new file with mode: 0644]
src/java/net/sf/jabref/bst/BstLexer.java
src/java/net/sf/jabref/bst/BstParser.java
src/java/net/sf/jabref/bst/bst.g [deleted file]
src/java/net/sf/jabref/export/CustomExportDialog.java
src/java/net/sf/jabref/export/CustomExportList.java
src/java/net/sf/jabref/export/ExportCustomizationDialog.java
src/java/net/sf/jabref/export/FileActions.java
src/java/net/sf/jabref/export/LatexFieldFormatter.java
src/java/net/sf/jabref/external/AutoSetExternalFileForEntries.java
src/java/net/sf/jabref/external/DroppedFileHandler.java
src/java/net/sf/jabref/external/ExternalFilePanel.java
src/java/net/sf/jabref/external/ExternalFileTypeEditor.java
src/java/net/sf/jabref/external/ExternalFileTypeEntryEditor.java
src/java/net/sf/jabref/external/IconSelection.java
src/java/net/sf/jabref/external/PushToApplicationButton.java
src/java/net/sf/jabref/external/PushToVim.java
src/java/net/sf/jabref/external/SynchronizeFileField.java
src/java/net/sf/jabref/external/UpgradeExternalLinks.java [deleted file]
src/java/net/sf/jabref/external/WriteXMPAction.java
src/java/net/sf/jabref/groups/AddToGroupAction.java
src/java/net/sf/jabref/groups/AutoGroupDialog.java
src/java/net/sf/jabref/groups/EntryTableTransferHandler.java
src/java/net/sf/jabref/groups/ExplicitGroup.java
src/java/net/sf/jabref/groups/GroupDialog.java
src/java/net/sf/jabref/groups/GroupSelector.java
src/java/net/sf/jabref/groups/KeywordGroup.java
src/java/net/sf/jabref/groups/SearchGroup.java
src/java/net/sf/jabref/groups/UnsupportedVersionException.java
src/java/net/sf/jabref/groups/VersionHandling.java
src/java/net/sf/jabref/gui/AttachFileDialog.java
src/java/net/sf/jabref/gui/BibtexKeyPatternDialog.java
src/java/net/sf/jabref/gui/CleanUpAction.java
src/java/net/sf/jabref/gui/DatabasePropertiesDialog.java
src/java/net/sf/jabref/gui/DragDropPopupPane.java
src/java/net/sf/jabref/gui/EntryCustomizationDialog2.java
src/java/net/sf/jabref/gui/FetcherPreviewDialog.java [new file with mode: 0644]
src/java/net/sf/jabref/gui/FieldWeightDialog.java
src/java/net/sf/jabref/gui/FileListEntryEditor.java
src/java/net/sf/jabref/gui/GenFieldsCustomizer.java
src/java/net/sf/jabref/gui/ImportInspectionDialog.java
src/java/net/sf/jabref/gui/WaitForSaveOperation.java
src/java/net/sf/jabref/imports/ACMPortalFetcher.java
src/java/net/sf/jabref/imports/ADSFetcher.java [new file with mode: 0644]
src/java/net/sf/jabref/imports/BibtexParser.java
src/java/net/sf/jabref/imports/CaseKeeper.java [new file with mode: 0644]
src/java/net/sf/jabref/imports/CaseKeeperList.java [new file with mode: 0644]
src/java/net/sf/jabref/imports/DOItoBibTeXFetcher.java [new file with mode: 0644]
src/java/net/sf/jabref/imports/DiVAtoBibTeXFetcher.java [new file with mode: 0644]
src/java/net/sf/jabref/imports/EntryFromFileCreatorManager.java
src/java/net/sf/jabref/imports/GeneralFetcher.java
src/java/net/sf/jabref/imports/GoogleScholarFetcher.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/OAI2Fetcher.java
src/java/net/sf/jabref/imports/OpenDatabaseAction.java
src/java/net/sf/jabref/imports/PdfContentImporter.java
src/java/net/sf/jabref/imports/PreviewEntryFetcher.java [new file with mode: 0644]
src/java/net/sf/jabref/imports/ZipFileChooser.java
src/java/net/sf/jabref/journals/ManageJournalsPanel.java
src/java/net/sf/jabref/labelPattern/ResolveDuplicateLabelDialog.java
src/java/net/sf/jabref/net/CookieHandlerImpl.java
src/java/net/sf/jabref/net/URLDownload.java
src/java/net/sf/jabref/oo/AdvancedCiteDialog.java
src/java/net/sf/jabref/oo/CitationManager.java
src/java/net/sf/jabref/oo/OpenOfficePanel.java
src/java/net/sf/jabref/oo/StyleSelectDialog.java
src/java/net/sf/jabref/plugin/ManagePluginsDialog.java
src/java/net/sf/jabref/remote/RemoteListener.java
src/java/net/sf/jabref/specialfields/Quality.java
src/java/net/sf/jabref/specialfields/SpecialFieldDatabaseChangeListener.java
src/java/net/sf/jabref/sql/DBConnectDialog.java
src/java/net/sf/jabref/sql/DBImportExportDialog.java
src/java/net/sf/jabref/sql/SQLUtil.java
src/java/net/sf/jabref/sql/exporter/PostgreSQLExporter.java
src/java/net/sf/jabref/undo/CountingUndoManager.java
src/java/net/sf/jabref/undo/UndoableInsertEntry.java
src/java/net/sf/jabref/util/ErrorConsole.java
src/java/net/sf/jabref/util/FileNameCleaner.java [new file with mode: 0644]
src/java/net/sf/jabref/util/ManageKeywordsAction.java
src/java/net/sf/jabref/util/MassSetFieldAction.java
src/java/net/sf/jabref/wizard/auximport/gui/FromAuxDialog.java
src/java/net/sf/jabref/wizard/text/gui/TextInputDialog.java
src/java/spl/gui/ImportDialog.java
src/java/spl/gui/MetaDataListDialog.java
src/plugins/net.sf.jabref.core/plugin.xml
src/resource/JabRef_da.properties
src/resource/JabRef_de.properties
src/resource/JabRef_en.properties
src/resource/JabRef_fr.properties
src/resource/JabRef_in.properties
src/resource/JabRef_it.properties
src/resource/JabRef_ja.properties
src/resource/JabRef_nl.properties
src/resource/JabRef_no.properties
src/resource/JabRef_pt_BR.properties
src/resource/JabRef_tr.properties
src/resource/JabRef_vi.properties
src/resource/JabRef_zh.properties
src/resource/Menu_it.properties
src/resource/build.properties
src/txt/CHANGELOG
src/txt/README
src/windows/nsis/setup.nsi

diff --git a/.classpath b/.classpath
new file mode 100644 (file)
index 0000000..13fe71e
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="src" path="src/java"/>
+       <classpathentry excluding="extensions/|java/|osx/|osx/osxadapter/|txt/|windows/" kind="src" path="src"/>
+       <classpathentry exported="true" kind="lib" path="lib/plugin/commons-logging.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/spin.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/microba.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/antlr.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/plugin/jpf.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/plugin/jpf-boot.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/plugin/JPFCodeGenerator-rt.jar" sourcepath="/JPFCodeGenerator/src"/>
+       <classpathentry exported="true" kind="lib" path="lib/glazedlists-1.8.0_java15.jar"/>
+       <classpathentry kind="lib" path="lib/mysql-connector-java-5.0.7-bin.jar"/>
+       <classpathentry kind="lib" path="lib/spl/sciplore/xstream-1.4.1.jar"/>
+       <classpathentry kind="lib" path="lib/spl/sciplore/mrDlib-serialization-api.jar" sourcepath="/Serialization API"/>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
+               <accessrules>
+                       <accessrule kind="accessible" pattern="**"/>
+               </accessrules>
+       </classpathentry>
+       <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
+       <classpathentry exported="true" kind="con" path="org.eclipse.jdt.USER_LIBRARY/resources"/>
+       <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/sciplore"/>
+       <classpathentry kind="lib" path="lib/spl/jersey/mimepull-1.3.jar"/>
+       <classpathentry kind="lib" path="lib/oo/juh.jar"/>
+       <classpathentry kind="lib" path="lib/oo/jurt.jar"/>
+       <classpathentry kind="lib" path="lib/oo/ridl.jar"/>
+       <classpathentry kind="lib" path="lib/oo/unoil.jar"/>
+       <classpathentry kind="lib" path="lib/spl/jersey/jersey-client-1.14.jar"/>
+       <classpathentry kind="lib" path="lib/spl/jersey/jersey-core-1.14.jar"/>
+       <classpathentry kind="lib" path="lib/spl/jersey/jersey-multipart-1.14.jar"/>
+       <classpathentry kind="lib" path="lib/antlr-3.4-complete.jar"/>
+       <classpathentry kind="lib" path="lib/jgoodies-common-1.4.0.jar"/>
+       <classpathentry kind="lib" path="lib/jgoodies-forms-1.6.0.jar"/>
+       <classpathentry kind="lib" path="lib/jgoodies-looks-2.5.2.jar"/>
+       <classpathentry kind="lib" path="lib/fontbox-1.7.1.jar"/>
+       <classpathentry kind="lib" path="lib/jempbox-1.7.1.jar"/>
+       <classpathentry kind="lib" path="lib/pdfbox-1.7.1.jar"/>
+       <classpathentry kind="lib" path="lib/jayatana-1.2.4.jar"/>
+       <classpathentry kind="lib" path="lib/postgresql-9.2-1002.jdbc4.jar"/>
+       <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..08a55c0
--- /dev/null
@@ -0,0 +1 @@
+.gradle
diff --git a/.idea/.name b/.idea/.name
new file mode 100644 (file)
index 0000000..0fb0660
--- /dev/null
@@ -0,0 +1 @@
+JabRef
\ No newline at end of file
diff --git a/.idea/ant.xml b/.idea/ant.xml
new file mode 100644 (file)
index 0000000..4674eea
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AntConfiguration">
+    <defaultAnt bundledAnt="true" />
+    <buildFile url="file://$PROJECT_DIR$/build.xml">
+      <additionalClassPath />
+      <antReference projectDefault="true" />
+      <customJdkName value="" />
+      <maximumHeapSize value="128" />
+      <maximumStackSize value="2" />
+      <properties />
+    </buildFile>
+  </component>
+</project>
+
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644 (file)
index 0000000..a1b41c5
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <option name="DEFAULT_COMPILER" value="Javac" />
+    <resourceExtensions />
+    <wildcardResourcePatterns>
+      <entry name="?*.properties" />
+      <entry name="?*.xml" />
+      <entry name="?*.gif" />
+      <entry name="?*.png" />
+      <entry name="?*.jpeg" />
+      <entry name="?*.jpg" />
+      <entry name="?*.html" />
+      <entry name="?*.dtd" />
+      <entry name="?*.tld" />
+      <entry name="?*.ftl" />
+    </wildcardResourcePatterns>
+    <annotationProcessing enabled="false" useClasspath="true" />
+  </component>
+</project>
+
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
new file mode 100644 (file)
index 0000000..3572571
--- /dev/null
@@ -0,0 +1,5 @@
+<component name="CopyrightManager">
+  <settings default="">
+    <module2copyright />
+  </settings>
+</component>
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644 (file)
index 0000000..e206d70
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
+</project>
+
diff --git a/.idea/libraries/jersey.xml b/.idea/libraries/jersey.xml
new file mode 100644 (file)
index 0000000..a86f467
--- /dev/null
@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="jersey">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/lib/spl/jersey/jersey-multipart-1.1.5.1.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/spl/jersey/jersey-core-1.1.5.1.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/spl/jersey/mimepull-1.3.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/spl/jersey/jersey-client-1.1.5.1.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/spl/jersey/jsr311-api-1.1.1.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/lib.xml b/.idea/libraries/lib.xml
new file mode 100644 (file)
index 0000000..ffb7135
--- /dev/null
@@ -0,0 +1,19 @@
+<component name="libraryTable">
+  <library name="lib">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/lib/mysql-connector-java-5.0.7-bin.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/spin.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/microba.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/antlr.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/glazedlists-1.8.0_java15.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/antlr-3.4-complete.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/fontbox-1.7.1.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/jgoodies-common-1.4.0.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/jgoodies-forms-1.6.0.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/jgoodies-looks-2.5.2.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/pdfbox-1.7.1.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/oo.xml b/.idea/libraries/oo.xml
new file mode 100644 (file)
index 0000000..ae80dd4
--- /dev/null
@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="oo">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/lib/oo/unoil.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/oo/juh.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/oo/jurt.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/oo/ridl.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/plugin.xml b/.idea/libraries/plugin.xml
new file mode 100644 (file)
index 0000000..529a8de
--- /dev/null
@@ -0,0 +1,14 @@
+<component name="libraryTable">
+  <library name="plugin">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/lib/plugin/JPFCodeGenerator-rt.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/plugin/jpf-boot.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/plugin/commons-logging.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/plugin/jpf.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/plugin/velocity-dep-1.5.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/plugin/JPFCodeGenerator.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/sciplore.xml b/.idea/libraries/sciplore.xml
new file mode 100644 (file)
index 0000000..0c9b450
--- /dev/null
@@ -0,0 +1,10 @@
+<component name="libraryTable">
+  <library name="sciplore">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/lib/spl/sciplore/mrDlib-serialization-api.jar!/" />
+      <root url="jar://$PROJECT_DIR$/lib/spl/sciplore/xstream-1.4.1.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644 (file)
index 0000000..b1fa7e1
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="EntryPointsManager">
+    <entry_points version="2.0" />
+  </component>
+  <component name="JavadocGenerationManager">
+    <option name="OUTPUT_DIRECTORY" />
+    <option name="OPTION_SCOPE" value="protected" />
+    <option name="OPTION_HIERARCHY" value="true" />
+    <option name="OPTION_NAVIGATOR" value="true" />
+    <option name="OPTION_INDEX" value="true" />
+    <option name="OPTION_SEPARATE_INDEX" value="true" />
+    <option name="OPTION_DOCUMENT_TAG_USE" value="false" />
+    <option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false" />
+    <option name="OPTION_DOCUMENT_TAG_VERSION" value="false" />
+    <option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true" />
+    <option name="OPTION_DEPRECATED_LIST" value="true" />
+    <option name="OTHER_OPTIONS" value="" />
+    <option name="HEAP_SIZE" />
+    <option name="LOCALE" />
+    <option name="OPEN_IN_BROWSER" value="true" />
+  </component>
+  <component name="ProjectResources">
+    <default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_5" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644 (file)
index 0000000..603f0d9
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/src/Jabref.iml" filepath="$PROJECT_DIR$/src/Jabref.iml" />
+    </modules>
+  </component>
+</project>
+
diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml
new file mode 100644 (file)
index 0000000..922003b
--- /dev/null
@@ -0,0 +1,5 @@
+<component name="DependencyValidationManager">
+  <state>
+    <option name="SKIP_IMPORT_STATEMENTS" value="false" />
+  </state>
+</component>
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644 (file)
index 0000000..3b00020
--- /dev/null
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644 (file)
index 0000000..2e0588c
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="" />
+    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
+  </component>
+</project>
+
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644 (file)
index 0000000..31026f0
--- /dev/null
@@ -0,0 +1,779 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" id="110fad89-c760-4067-8a03-8bd14c0eb411" name="Default" comment="" />
+    <ignored path="JabRef.iws" />
+    <ignored path=".idea/workspace.xml" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
+  <component name="CreatePatchCommitExecutor">
+    <option name="PATCH_PATH" value="" />
+  </component>
+  <component name="DaemonCodeAnalyzer">
+    <disable_hints />
+  </component>
+  <component name="DebuggerManager">
+    <breakpoint_any>
+      <breakpoint>
+        <option name="NOTIFY_CAUGHT" value="true" />
+        <option name="NOTIFY_UNCAUGHT" value="true" />
+        <option name="ENABLED" value="false" />
+        <option name="LOG_ENABLED" value="false" />
+        <option name="LOG_EXPRESSION_ENABLED" value="false" />
+        <option name="SUSPEND_POLICY" value="SuspendAll" />
+        <option name="COUNT_FILTER_ENABLED" value="false" />
+        <option name="COUNT_FILTER" value="0" />
+        <option name="CONDITION_ENABLED" value="false" />
+        <option name="CLASS_FILTERS_ENABLED" value="false" />
+        <option name="INSTANCE_FILTERS_ENABLED" value="false" />
+        <option name="CONDITION" value="" />
+        <option name="LOG_MESSAGE" value="" />
+      </breakpoint>
+      <breakpoint>
+        <option name="NOTIFY_CAUGHT" value="true" />
+        <option name="NOTIFY_UNCAUGHT" value="true" />
+        <option name="ENABLED" value="false" />
+        <option name="LOG_ENABLED" value="false" />
+        <option name="LOG_EXPRESSION_ENABLED" value="false" />
+        <option name="SUSPEND_POLICY" value="SuspendAll" />
+        <option name="COUNT_FILTER_ENABLED" value="false" />
+        <option name="COUNT_FILTER" value="0" />
+        <option name="CONDITION_ENABLED" value="false" />
+        <option name="CLASS_FILTERS_ENABLED" value="false" />
+        <option name="INSTANCE_FILTERS_ENABLED" value="false" />
+        <option name="CONDITION" value="" />
+        <option name="LOG_MESSAGE" value="" />
+      </breakpoint>
+    </breakpoint_any>
+    <breakpoint_rules />
+    <ui_properties />
+  </component>
+  <component name="FavoritesManager">
+    <favorites_list name="JabRef" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf>
+      <file leaf-file-name="_JabRefPlugin.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/plugin/core/generated/_JabRefPlugin.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="178" column="32" selection-start="6134" selection-end="6134" vertical-scroll-proportion="0.0">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="JabRefPlugin.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/plugin/core/JabRefPlugin.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="29" column="13" selection-start="1222" selection-end="1222" vertical-scroll-proportion="0.0">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="PluginCore.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/plugin/PluginCore.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="83" column="10" selection-start="3097" selection-end="3097" vertical-scroll-proportion="0.0">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="BibtexParser.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/imports/BibtexParser.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="378" column="46" selection-start="11423" selection-end="11423" vertical-scroll-proportion="0.0">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="Globals.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/Globals.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="1020" column="42" selection-start="39393" selection-end="39393" vertical-scroll-proportion="0.0">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="JabRef.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/JabRef.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="100" column="33" selection-start="3911" selection-end="3911" vertical-scroll-proportion="0.0">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="Util.java" pinned="false" current="true" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/Util.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="3168" column="16" selection-start="106476" selection-end="106476" vertical-scroll-proportion="0.14893617">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="HTMLConverter.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/imports/HTMLConverter.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="62" column="71" selection-start="3587" selection-end="3587" vertical-scroll-proportion="0.0">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="EntryEditor.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/EntryEditor.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="1418" column="38" selection-start="54407" selection-end="54407" vertical-scroll-proportion="0.0">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="LabelPatternUtil.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/labelPattern/LabelPatternUtil.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="170" column="27" selection-start="6273" selection-end="6273" vertical-scroll-proportion="0.0">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="FindManager">
+    <FindUsagesManager>
+      <setting name="OPEN_NEW_TAB" value="false" />
+    </FindUsagesManager>
+  </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
+  </component>
+  <component name="GradleLocalSettings">
+    <option name="expandStates">
+      <map>
+        <entry key="JabRef" value="true" />
+      </map>
+    </option>
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="changedFiles">
+      <list>
+        <option value="$PROJECT_DIR$/src/plugins/net.sf.jabref.core/plugin.xml" />
+        <option value="$PROJECT_DIR$/src/java/net/sf/jabref/net/URLDownload.java" />
+        <option value="$PROJECT_DIR$/src/txt/CHANGELOG" />
+        <option value="$PROJECT_DIR$/src/java/net/sf/jabref/imports/PreviewEntryFetcher.java" />
+        <option value="$PROJECT_DIR$/src/java/net/sf/jabref/gui/FetcherPreviewDialog.java" />
+        <option value="$PROJECT_DIR$/src/java/net/sf/jabref/imports/GoogleScholarFetcher.java" />
+        <option value="$PROJECT_DIR$/src/java/net/sf/jabref/imports/ACMPortalFetcher.java" />
+        <option value="$PROJECT_DIR$/src/java/net/sf/jabref/JabRefFrame.java" />
+        <option value="$PROJECT_DIR$/src/java/net/sf/jabref/imports/GeneralFetcher.java" />
+        <option value="$PROJECT_DIR$/src/help/ACMPortalHelp.html" />
+        <option value="$PROJECT_DIR$/src/help/GoogleScholarHelp.html" />
+        <option value="$PROJECT_DIR$/src/java/net/sf/jabref/plugin/core/generated/_JabRefPlugin.java" />
+        <option value="$PROJECT_DIR$/src/java/net/sf/jabref/plugin/PluginCore.java" />
+        <option value="$PROJECT_DIR$/src/java/net/sf/jabref/imports/BibtexParser.java" />
+        <option value="$PROJECT_DIR$/src/java/net/sf/jabref/JabRef.java" />
+        <option value="$PROJECT_DIR$/src/java/net/sf/jabref/Util.java" />
+      </list>
+    </option>
+  </component>
+  <component name="MavenRunner">
+    <option name="jreName" value="1.6" />
+  </component>
+  <component name="ModuleEditorState">
+    <option name="LAST_EDITED_MODULE_NAME" />
+    <option name="LAST_EDITED_TAB_NAME" />
+  </component>
+  <component name="ProjectFrameBounds">
+    <option name="y" value="31" />
+    <option name="width" value="1366" />
+    <option name="height" value="737" />
+  </component>
+  <component name="ProjectInspectionProfilesVisibleTreeState">
+    <entry key="Project Default">
+      <profile-state>
+        <expanded-state>
+          <State>
+            <id />
+          </State>
+        </expanded-state>
+        <selected-state>
+          <State>
+            <id>Abstraction issues</id>
+          </State>
+        </selected-state>
+      </profile-state>
+    </entry>
+  </component>
+  <component name="ProjectLevelVcsManager" settingsEditedManually="true">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
+  <component name="ProjectReloadState">
+    <option name="STATE" value="0" />
+  </component>
+  <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+    </navigator>
+    <panes>
+      <pane id="Scope">
+        <subPane subId="Project Files">
+          <PATH>
+            <PATH_ELEMENT USER_OBJECT="Root">
+              <option name="myItemId" value="" />
+              <option name="myItemType" value="" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+      <pane id="ProjectPane">
+        <subPane>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="JabRef" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="JabRef" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="JabRef" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="txt" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="JabRef" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="help" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+      <pane id="PackagesPane">
+        <subPane>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="JabRef" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="Jabref" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+      <pane id="Favorites" />
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="project.structure.last.edited" value="Libraries" />
+    <property name="GoToFile.includeJavaFiles" value="false" />
+    <property name="project.structure.proportion" value="0.15" />
+    <property name="OverrideImplement.combined" value="true" />
+    <property name="options.splitter.main.proportions" value="0.3" />
+    <property name="RESOURCE_BUNDLE_SPLITTER_PROPORTION" value="0.5" />
+    <property name="recentsLimit" value="5" />
+    <property name="MemberChooser.sorted" value="false" />
+    <property name="options.lastSelected" value="editor.preferences.appearance" />
+    <property name="project.structure.side.proportion" value="0.2" />
+    <property name="GoToClass.includeJavaFiles" value="false" />
+    <property name="MemberChooser.copyJavadoc" value="false" />
+    <property name="GoToClass.toSaveIncludeLibraries" value="false" />
+    <property name="MemberChooser.showClasses" value="true" />
+    <property name="GoToClass.includeLibraries" value="false" />
+    <property name="options.splitter.details.proportions" value="0.2" />
+    <property name="options.searchVisible" value="true" />
+    <property name="dynamic.classpath" value="false" />
+  </component>
+  <component name="RunManager" selected="Application.JabRef">
+    <configuration default="false" name="FetcherPreviewDialog" type="Application" factoryName="Application" temporary="true">
+      <option name="MAIN_CLASS_NAME" value="net.sf.jabref.gui.FetcherPreviewDialog" />
+      <option name="VM_PARAMETERS" value="" />
+      <option name="PROGRAM_PARAMETERS" value="" />
+      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" value="" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <module name="Jabref" />
+      <envs />
+      <RunnerSettings RunnerId="Run" />
+      <ConfigurationWrapper RunnerId="Run" />
+      <method />
+    </configuration>
+    <configuration default="true" type="Remote" factoryName="Remote">
+      <option name="USE_SOCKET_TRANSPORT" value="true" />
+      <option name="SERVER_MODE" value="false" />
+      <option name="SHMEM_ADDRESS" value="javadebug" />
+      <option name="HOST" value="localhost" />
+      <option name="PORT" value="5005" />
+      <method>
+        <option name="AntTarget" enabled="false" />
+        <option name="BuildArtifacts" enabled="false" />
+        <option name="Maven.BeforeRunTask" enabled="false" />
+      </method>
+    </configuration>
+    <configuration default="true" type="Applet" factoryName="Applet">
+      <module name="" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="HTML_FILE_NAME" />
+      <option name="HTML_USED" value="false" />
+      <option name="WIDTH" value="400" />
+      <option name="HEIGHT" value="300" />
+      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
+      <option name="VM_PARAMETERS" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <method>
+        <option name="AntTarget" enabled="false" />
+        <option name="BuildArtifacts" enabled="false" />
+        <option name="Make" enabled="true" />
+        <option name="Maven.BeforeRunTask" enabled="false" />
+      </method>
+    </configuration>
+    <configuration default="true" type="Application" factoryName="Application">
+      <option name="MAIN_CLASS_NAME" />
+      <option name="VM_PARAMETERS" />
+      <option name="PROGRAM_PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <module name="" />
+      <envs />
+      <method>
+        <option name="AntTarget" enabled="false" />
+        <option name="BuildArtifacts" enabled="false" />
+        <option name="Make" enabled="true" />
+        <option name="Maven.BeforeRunTask" enabled="false" />
+      </method>
+    </configuration>
+    <configuration default="true" type="JUnit" factoryName="JUnit">
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="TEST_OBJECT" value="class" />
+      <option name="VM_PARAMETERS" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="moduleWithDependencies" />
+      </option>
+      <envs />
+      <patterns />
+      <method>
+        <option name="AntTarget" enabled="false" />
+        <option name="BuildArtifacts" enabled="false" />
+        <option name="Make" enabled="true" />
+        <option name="Maven.BeforeRunTask" enabled="false" />
+      </method>
+    </configuration>
+    <configuration default="false" name="JabRef" type="Application" factoryName="Application">
+      <option name="MAIN_CLASS_NAME" value="net.sf.jabref.JabRef" />
+      <option name="VM_PARAMETERS" value="" />
+      <option name="PROGRAM_PARAMETERS" value="" />
+      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" value="" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <module name="Jabref" />
+      <envs />
+      <RunnerSettings RunnerId="Run" />
+      <ConfigurationWrapper RunnerId="Run" />
+      <method />
+    </configuration>
+    <list size="2">
+      <item index="0" class="java.lang.String" itemvalue="Application.FetcherPreviewDialog" />
+      <item index="1" class="java.lang.String" itemvalue="Application.JabRef" />
+    </list>
+    <configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
+      <Host>localhost</Host>
+      <Port>5050</Port>
+    </configuration>
+  </component>
+  <component name="ShelveChangesManager" show_recycled="false" />
+  <component name="SliceManager">
+    <option name="analysisUIOptions">
+      <AnalysisUIOptions />
+    </option>
+  </component>
+  <component name="StructureViewFactory">
+    <option name="ACTIVE_ACTIONS" value="ALPHA_COMPARATOR" />
+  </component>
+  <component name="SvnConfiguration" maxAnnotateRevisions="500" myUseAcceleration="nothing" myAutoUpdateAfterCommit="false" cleanupOnStartRun="false">
+    <option name="USER" value="" />
+    <option name="PASSWORD" value="" />
+    <option name="mySSHConnectionTimeout" value="30000" />
+    <option name="mySSHReadTimeout" value="30000" />
+    <option name="LAST_MERGED_REVISION" />
+    <option name="MERGE_DRY_RUN" value="false" />
+    <option name="MERGE_DIFF_USE_ANCESTRY" value="true" />
+    <option name="UPDATE_LOCK_ON_DEMAND" value="false" />
+    <option name="IGNORE_SPACES_IN_MERGE" value="false" />
+    <option name="DETECT_NESTED_COPIES" value="true" />
+    <option name="CHECK_NESTED_FOR_QUICK_MERGE" value="false" />
+    <option name="IGNORE_SPACES_IN_ANNOTATE" value="true" />
+    <option name="SHOW_MERGE_SOURCES_IN_ANNOTATE" value="true" />
+    <option name="FORCE_UPDATE" value="false" />
+    <option name="IGNORE_EXTERNALS" value="false" />
+    <configuration useDefault="true">$USER_HOME$/.subversion_IDEA</configuration>
+    <myIsUseDefaultProxy>false</myIsUseDefaultProxy>
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="110fad89-c760-4067-8a03-8bd14c0eb411" name="Default" comment="" />
+      <created>1329409618362</created>
+      <updated>1329409618362</updated>
+    </task>
+    <servers />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="0" y="31" width="1366" height="737" extended-state="6" />
+    <editor active="false" />
+    <layout>
+      <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32847896" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="JetGradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32928678" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.1107739" sideWeight="0.7815534" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.2184466" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.25037935" sideWeight="0.60355985" order="1" side_tool="true" content_ui="tabs" />
+      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.25037935" sideWeight="0.16666667" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32847896" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.23786408" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+    </layout>
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="VcsManagerConfiguration">
+    <option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="true" />
+    <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" />
+    <option name="CHECK_NEW_TODO" value="true" />
+    <option name="myTodoPanelSettings">
+      <value>
+        <are-packages-shown value="false" />
+        <are-modules-shown value="false" />
+        <flatten-packages value="false" />
+        <is-autoscroll-to-source value="false" />
+      </value>
+    </option>
+    <option name="PERFORM_UPDATE_IN_BACKGROUND" value="true" />
+    <option name="PERFORM_COMMIT_IN_BACKGROUND" value="true" />
+    <option name="PERFORM_EDIT_IN_BACKGROUND" value="true" />
+    <option name="PERFORM_CHECKOUT_IN_BACKGROUND" value="true" />
+    <option name="PERFORM_ADD_REMOVE_IN_BACKGROUND" value="true" />
+    <option name="PERFORM_ROLLBACK_IN_BACKGROUND" value="false" />
+    <option name="CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND" value="false" />
+    <option name="ENABLE_BACKGROUND_PROCESSES" value="false" />
+    <option name="CHANGED_ON_SERVER_INTERVAL" value="60" />
+    <option name="SHOW_ONLY_CHANGED_IN_SELECTION_DIFF" value="true" />
+    <option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
+    <option name="DEFAULT_PATCH_EXTENSION" value="patch" />
+    <option name="SHORT_DIFF_HORISONTALLY" value="true" />
+    <option name="SHORT_DIFF_EXTRA_LINES" value="2" />
+    <option name="SOFT_WRAPS_IN_SHORT_DIFF" value="true" />
+    <option name="INCLUDE_TEXT_INTO_PATCH" value="false" />
+    <option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
+    <option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
+    <option name="SHOW_FILE_HISTORY_DETAILS" value="true" />
+    <option name="SHOW_VCS_ERROR_NOTIFICATIONS" value="true" />
+    <option name="FORCE_NON_EMPTY_COMMENT" value="false" />
+    <option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="false" />
+    <option name="LAST_COMMIT_MESSAGE" />
+    <option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
+    <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
+    <option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
+    <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
+    <option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
+    <option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
+    <option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
+    <option name="ACTIVE_VCS_NAME" />
+    <option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
+    <option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
+    <option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
+    <option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager />
+  </component>
+  <component name="antWorkspaceConfiguration">
+    <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
+    <option name="FILTER_TARGETS" value="true" />
+    <buildFile url="file://$PROJECT_DIR$/build.xml">
+      <antCommandLine value="" />
+      <runInBackground value="true" />
+      <targetFilters>
+        <filter targetName="non_osx" isVisible="false" />
+        <filter targetName="generate" isVisible="false" />
+        <filter targetName="test" isVisible="false" />
+        <filter targetName="docs" isVisible="false" />
+        <filter targetName="build" isVisible="true" />
+        <filter targetName="run" isVisible="true" />
+        <filter targetName="extensions" isVisible="false" />
+        <filter targetName="compiletest" isVisible="false" />
+        <filter targetName="win.installer" isVisible="false" />
+        <filter targetName="jalopy" isVisible="false" />
+        <filter targetName="clean" isVisible="true" />
+        <filter targetName="win.installer.clean" isVisible="false" />
+        <filter targetName="compile" isVisible="false" />
+        <filter targetName="jars" isVisible="false" />
+        <filter targetName="profile" isVisible="false" />
+        <filter targetName="osx" isVisible="false" />
+        <filter targetName="osxjar" isVisible="false" />
+        <filter targetName="runFromJar" isVisible="false" />
+        <filter targetName="javadocs" isVisible="false" />
+        <filter targetName="unjarlib" isVisible="false" />
+        <filter targetName="buildinfos" isVisible="false" />
+        <filter targetName="buildtest" isVisible="false" />
+        <filter targetName="extension-javadocs" isVisible="false" />
+        <filter targetName="win.installer.linux" isVisible="false" />
+      </targetFilters>
+      <treeView value="true" />
+      <verbose value="true" />
+      <viewClosedWhenNoErrors value="false" />
+      <expanded value="true" />
+    </buildFile>
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/src/help/Autosave.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/help/ACMPortalHelp.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="24" column="82" selection-start="1282" selection-end="1361" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/imports/EntryFetcher.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/help/BaseFrameHelp.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/build.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="165" column="17" selection-start="6867" selection-end="6867" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/export/ExportFormats.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="208" column="63" selection-start="7795" selection-end="7795" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/plugin/core/generated/_JabRefPlugin.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="178" column="32" selection-start="6134" selection-end="6134" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/plugin/core/JabRefPlugin.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="29" column="13" selection-start="1222" selection-end="1222" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/plugin/PluginCore.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="83" column="10" selection-start="3097" selection-end="3097" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/JabRef.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="100" column="33" selection-start="3911" selection-end="3911" vertical-scroll-proportion="0.0">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/EntryEditor.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="1418" column="38" selection-start="54407" selection-end="54407" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/labelPattern/LabelPatternUtil.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="170" column="27" selection-start="6273" selection-end="6273" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/imports/HTMLConverter.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="62" column="71" selection-start="3587" selection-end="3587" vertical-scroll-proportion="0.0">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/imports/BibtexParser.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="378" column="46" selection-start="11423" selection-end="11423" vertical-scroll-proportion="0.0">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/Globals.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="1020" column="42" selection-start="39393" selection-end="39393" vertical-scroll-proportion="0.0">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/net/sf/jabref/Util.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="3168" column="16" selection-start="106476" selection-end="106476" vertical-scroll-proportion="0.14893617">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+  </component>
+  <component name="masterDetails">
+    <states>
+      <state key="ArtifactsStructureConfigurable.UI">
+        <settings>
+          <artifact-editor />
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="FacetStructureConfigurable.UI">
+        <settings>
+          <last-edited>No facets are configured</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="GlobalLibrariesConfigurable.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="JdkListConfigurable.UI">
+        <settings>
+          <last-edited>1.6</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="ModuleStructureConfigurable.UI">
+        <settings>
+          <last-edited>Jabref</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+                <option value="0.5" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="ProjectLibrariesConfigurable.UI">
+        <settings>
+          <last-edited>lib</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+    </states>
+  </component>
+</project>
+
diff --git a/.project b/.project
new file mode 100644 (file)
index 0000000..ca82803
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>Jabref</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>
diff --git a/JabRef - MrDlib.userlibraries b/JabRef - MrDlib.userlibraries
deleted file mode 100644 (file)
index f53acbe..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<eclipse-userlibraries>
-  <library name="resources" />
-  <library name="sciplore">
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/intellij/annotations.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/intellij/forms_rt.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/jersey/jersey-client-1.1.5.1.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/jersey/jersey-core-1.1.5.1.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/jersey/jersey-multipart-1.1.5.1.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/jersey/jsr311-api-1.1.1.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/jersey/mimepull-1.3.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/sciplore/SciPloreDBAccess.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/jibx/bcel.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/jibx/commons-logging-1.0.4.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/jibx/jaxme-js-0.3.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/jibx/jibx-bind.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/jibx/jibx-extras.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/jibx/jibx-run.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/jibx/log4j-1.2.8.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/jibx/xpp3.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/bindings.jar" />
-    <archive path="C:/Users/Christoph Arbeit/Documents/Arbeit/Hiwi/JabRef - MrDlib/lib/spl/freemind.jar" />
-  </library>
-</eclipse-userlibraries>
-
diff --git a/build.gradle b/build.gradle
deleted file mode 100644 (file)
index 055a1ec..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-apply plugin: 'java'
-
-// with gradle 1.1, Sonar 3.2 is not working. One needs Sonar 3.1.1
-apply plugin: 'sonar'
-
-sourceSets {
-       main {
-               java {
-                       srcDir 'src/java'
-               }
-               resources {
-                       srcDir 'src/resource'
-               }
-       }
-}
index 864e538..7496aca 100644 (file)
@@ -1,3 +1,3 @@
 #Build Number for ANT. Do not edit!
-#Thu Oct 25 19:21:59 CEST 2012
-build.number=395
+#Sun Nov 18 13:50:10 CET 2012
+build.number=623
index 868e9b3..787f722 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -9,13 +9,14 @@
              Jabref homepage:       http://jabref.sourceforge.net
              Jabref@SourceForge:    http://sourceforge.net/projects/jabref
              Jabref@FreeCode:       http://apps.freecode.com/projects/jabref
+             Jabref@Ohloh:          https://www.ohloh.net/p/jabref
              Jabref git repository: git://jabref.git.sourceforge.net/gitroot/jabref/jabref
 
              Further questions:
                help mailing list:   https://lists.sourceforge.net/lists/listinfo/jabref-users
 
    Precondition: 1. Ant should be installed.
-                 2. JAVA_HOME environment variable contains the path to JDK1.5 or higher
+                 2. JAVA_HOME environment variable contains the path to JDK1.6 or higher
                  3. ANT_HOME environment variable contains the path to ant's home directory
 
    Language: XML
@@ -34,7 +35,7 @@
      +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
 
        <!-- some version information -->
-       <property name="jabref.version" value="2.9b" />
+       <property name="jabref.version" value="2.9b2" />
        <property name="jabref.year" value="2012" />
        <property name="jabref.placeholder.version" value="@version@" />
        <property name="jabref.placeholder.year" value="@year@" />
        <property name="extensions.dir" value="${src.dir}/extensions" />
        <property name="layout.dir" value="${src.dir}/resource/layout" />
        <property name="lib.dir" value="lib" />
+       <property name="buildlib.dir" value="buildlib" />
        <property name="tests.dir" value="${src.dir}/tests" />
 
+       <property name="osxbin.dir" value="osx" />
+
        <property name="nsis.executable" value="C:\Program files\NSIS\makensis.exe"/>
        <property name="nsis.executable.linux" value="makensis"/>
 
 
        <fileset id="jarsFileset" dir="${lib.dir}">
                <include name="antlr.jar" />
-               <include name="antlr-3.0b5.jar" />
-        <include name="jgoodies-common-1.3.1.jar" />
-               <include name="jgoodies-looks-2.5.1.jar" />
-               <include name="jgoodies-forms-1.5.1.jar" />
+               <include name="antlr-3.4-complete.jar" />
+        <include name="jgoodies-common-1.4.0.jar" />
+               <include name="jgoodies-looks-2.5.2.jar" />
+               <include name="jgoodies-forms-1.6.0.jar" />
+               <include name="jayatana-1.2.4.jar" />
                <include name="spin.jar" />
                <include name="glazedlists-1.8.0_java15.jar" />
                <include name="microba.jar" />
-               <include name="pdfbox-1.6.0.jar" />
-               <include name="jempbox-1.6.0.jar" />
-               <include name="fontbox-1.6.0.jar" />
+               <include name="pdfbox-1.7.1.jar" />
+               <include name="jempbox-1.7.1.jar" />
+               <include name="fontbox-1.7.1.jar" />
                <include name="zoom-java.jar" />
        <include name="mysql-connector-java-5.0.7-bin.jar" />
-               <include name="postgresql-9.1-902.jdbc4.jar" />
-        <!--<include name="substance-4.1.jar" />-->
+               <include name="postgresql-9.2-1002.jdbc4.jar" />
         <!-- Plugin runtime dependencies -->
                <include name="plugin/JPFCodeGenerator-rt.jar" />
                <include name="plugin/jpf.jar" />
        <!-- Classpath for tests -->
        <path id="classpathTest">
                <path refid="classpath" />
-               <pathelement location="${lib.dir}/junit.jar" />
+               <pathelement location="${buildlib.dir}/junit.jar" />
        </path>
 
        <target name="run" depends="build">
        <target name="compile" depends="generate">
                <mkdir dir="${build.classes}" />
                <javac debug="on" deprecation="on" destdir="${build.classes}" encoding="UTF8"
-                  source="1.5" target="1.5">
+                  source="1.6" target="1.6">
                        <src path="${java.dir}" />
                        <exclude name="tests/**" />
                        <exclude name="**/JabRefMain.java" />
                        <classpath refid="classpath" />
                </javac>
-               <javac debug="off" deprecation="on" destdir="${build.classes}" source="1.4" target="1.4">
+               <javac debug="off" deprecation="on" destdir="${build.classes}" source="1.6" target="1.6">
                        <src path="${java.dir}" />
                        <include name="**/JabRefMain.java" />
                </javac>
        <!-- Compiles project including tests -->
        <target name="compiletest">
                <mkdir dir="${build.classes}" />
-               <javac debug="on" destdir="${build.classes}" source="1.5" target="1.5">
+               <javac debug="on" destdir="${build.classes}" source="1.6" target="1.6">
                        <src path="${java.dir}" />
                        <include name="tests/**" />
                        <classpath refid="classpathTest" />
        <target name="osx">
                <mkdir dir="${build.classes}" />
 
-               <javac srcdir="${osx.dir}" debug="off" destdir="${build.classes}" target="1.5">
+               <javac srcdir="${osx.dir}" debug="off" destdir="${build.classes}" target="1.6">
                </javac>
        </target>
 
        <!-- Copies in the OSXAdapter class, which is compilable only on Mac  -->
        <target name="non_osx">
                <mkdir dir="${build.osx}" />
-               <copy file="${lib.dir}/OSXAdapter.class" todir="${build.osx}" />
+               <copy file="${osxbin.dir}/OSXAdapter.class" todir="${build.osx}" />
        </target>
 
        <!-- Jars up project -->
@@ -350,7 +354,7 @@ version=${jabref.version}</echo>
        <!-- Creates javadocs -->
        <target name="javadocs" depends="compile" description="Generates the javadocs">
                <mkdir dir="${build.javadocs}" />
-               <javadoc sourcepath="${java.dir}" destdir="${build.javadocs}" author="true" version="true" windowtitle="JabRef API" link="http://java.sun.com/j2se/1.4.1/docs/api/">
+               <javadoc sourcepath="${java.dir}" destdir="${build.javadocs}" author="true" version="true" windowtitle="JabRef API" link="http://docs.oracle.com/javase/6/docs/api/">
 
                        <fileset dir="${java.dir}" defaultexcludes="yes">
                                <include name="**/*.java" />
@@ -370,7 +374,7 @@ version=${jabref.version}</echo>
                        </fileset>
                </copy>
 
-               <javadoc sourcepath="${java.dir}" destdir="${build.extension-javadocs}" author="true" version="true" windowtitle="JabRef-Extensions API" link="http://java.sun.com/j2se/1.4.1/docs/api/" Overview="${extensions.dir}/API/overview.html" access="protected">
+               <javadoc sourcepath="${java.dir}" destdir="${build.extension-javadocs}" author="true" version="true" windowtitle="JabRef-Extensions API" link="http://docs.oracle.com/javase/6/docs/api/" Overview="${extensions.dir}/API/overview.html" access="protected">
                        <!-- 
                  create javadoc only selectively for classes that 
                  users extending JabRef are likely to use
@@ -444,12 +448,17 @@ version=${jabref.version}</echo>
                     jars="${build.lib}/${build.jar}"
                     icon="${images.dir}/JabRef-Logo.icns"
                     version="${jabref.version}"
-                    jvmversion="1.4+"
-                    stubfile="${lib.dir}/JavaApplicationStub"
+                    jvmversion="1.5+"
+                    stubfile="${osxbin.dir}/JavaApplicationStub"
                     signature="JABr">
             <documenttype name="BibTeX file" extensions="bib" role="Editor"
                           iconFile="${images.dir}/JabRef-Logo.icns"/>
         </jarbundler>
+        <!-- After running jarbundler we need to hack the Info.plist file: -->
+        <replace file="${build.lib}/JabRef.app/Contents/Info.plist" token="&lt;key&gt;CFBundleDocumentTypes&lt;/key&gt;"
+            value="&lt;key&gt;NSPrincipalClass&lt;/key&gt;${line.separator}
+   &lt;string&gt;NSApplication&lt;/string&gt;${line.separator}
+   &lt;key&gt;CFBundleDocumentTypes&lt;/key&gt;"/>
        </target>
 
 
@@ -567,83 +576,6 @@ version=${jabref.version}</echo>
         What's about the software design ?!;-)
     ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
 
-       <target name="pmd" description="SOFTWAREDESIGN: Project Mess Detector !;-)">
-               <echo>Checking Project Mess Detection (PMD) rulesets.</echo>
-               <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask">
-                       <classpath>
-                               <pathelement path="${classpath}" />
-                               <fileset dir="${lib.dir}">
-                                       <include name="*.jar" />
-                               </fileset>
-                       </classpath>
-               </taskdef>
-               <!-- allowed Pretty Much Done rulsets -->
-               <!-- rulesets/basic.xml -->
-               <!-- rulesets/braces.xml -->
-               <!-- rulesets/codesize.xml-->
-               <!-- rulesets/controversial.xml-->
-               <!-- rulesets/coupling.xml-->
-               <!-- rulesets/design.xml -->
-               <!-- rulesets/experimental.xml -->
-               <!-- rulesets/favorites.xml -->
-               <!-- rulesets/imports.xml -->
-               <!-- rulesets/naming.xml -->
-               <!-- rulesets/javabean.xml -->
-               <!-- rulesets/junit.xml -->
-               <!-- rulesets/scratchpad.xml -->
-               <!-- rulesets/strictexception.xml -->
-               <!-- rulesets/strings.xml -->
-               <!-- rulesets/unusedcode.xml -->
-
-               <pmd rulesetfiles="rulesets/unusedcode.xml,rulesets/basic.xml" failonerror="no">
-                       <formatter type="html" toFile="${build.dir}/pmd_report.html" />
-                       <fileset dir="${src.dir}">
-                               <include name="**/*.java" />
-                       </fileset>
-               </pmd>
-
-               <!-- check for duplicated code -->
-               <echo>WARNING: use environment variable: ANT_OPTS=-Xmx512m or this task will fail.</echo>
-               <echo>Checking for duplicated code using the Copy/Paste Detector (CPD).</echo>
-               <taskdef name="cpd" classname="net.sourceforge.pmd.cpd.CPDTask">
-                       <classpath>
-                               <pathelement path="${classpath}" />
-                               <fileset dir="${lib.dir}">
-                                       <include name="*.jar" />
-                               </fileset>
-                       </classpath>
-               </taskdef>
-               <cpd format="text" minimumTokenCount="100" outputFile="${build.dir}/duplicated_code_report.txt">
-                       <fileset dir="${src.dir}">
-                               <include name="**/*.java" />
-                       </fileset>
-               </cpd>
-       </target>
-
-
-       <target name="javancss" description="SOFTWAREDESIGN: Determining the NCSS and CCN code metrics for JOELib.">
-               <taskdef name="javancss" classname="javancss.JavancssAntTask">
-                       <classpath>
-                               <pathelement path="${classpath}" />
-                               <fileset dir="${lib.dir}">
-                                       <include name="*.jar" />
-                               </fileset>
-                       </classpath>
-               </taskdef>
-               <echo>Cyclomatic
-Complexity             Ease of       Risk
-Number (CCN)           maintenance
-(McCabe metric)
----------------------------------------------
-1-10, simple           easy          minimum
-11-20, complex         moderate      moderate
-21-50, more complex    hard          high
->50, unstable          very hard     very high
-
-</echo>
-               <javancss srcdir="${src.dir}" includes="**/*.java" excludes="jama/**/*.java, jmat/**/*.java, cformat/**/*.java" abortOnFail="false" ccnPerFuncMax="30" generateReport="true" outputfile="${build.dir}/javancss_report.plain" format="plain" packageMetrics="true" classMetrics="false" functionMetrics="false" />
-       </target>
-
        <target name="jalopy" description="SOFTWAREDESIGN: source code formatter using the JOELib convention.">
                <taskdef name="jalopy" classname="de.hunsicker.jalopy.plugin.ant.AntPlugin">
                        <classpath>
@@ -651,6 +583,9 @@ Number (CCN)           maintenance
                                <fileset dir="${lib.dir}">
                                        <include name="*.jar" />
                                </fileset>
+                               <fileset dir="${buildlib.dir}">
+                                       <include name="*.jar" />
+                               </fileset>
                        </classpath>
                </taskdef>
                <jalopy fileformat="unix" convention="${src.dir}/java/jalopy.format.convention.xml" history="file" historymethod="adler32" loglevel="error" threads="2" classpathref="classpath" backup="bak">
@@ -660,6 +595,6 @@ Number (CCN)           maintenance
                </jalopy>
        </target>
 
-       <taskdef name="jarbundler" classpath="${lib.dir}/jarbundler-2.2.0.jar" classname="net.sourceforge.jarbundler.JarBundler" />
+       <taskdef name="jarbundler" classpath="${buildlib.dir}/jarbundler-2.2.0.jar" classname="net.sourceforge.jarbundler.JarBundler" />
 
 </project>
diff --git a/buildlib/jarbundler-2.2.0.jar b/buildlib/jarbundler-2.2.0.jar
new file mode 100644 (file)
index 0000000..1009748
Binary files /dev/null and b/buildlib/jarbundler-2.2.0.jar differ
diff --git a/jabref.ebuild b/jabref.ebuild
new file mode 100644 (file)
index 0000000..4e00a93
--- /dev/null
@@ -0,0 +1,79 @@
+#See also https://bugs.gentoo.org/show_bug.cgi?id=385751
+
+#=========== jabref ebuild hacked from dmol's 2.8.1 ==============
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:  $
+
+EAPI=4
+
+WANT_ANT_TASKS="dev-java/jarbundler:0"
+#docs aren't builded correctly?
+JAVA_PKG_IUSE=""
+inherit eutils java-pkg-2 java-ant-2
+
+MY_PV="${PV/_beta/b}"
+
+DESCRIPTION="GUI frontend for BibTeX, written in Java"
+HOMEPAGE="http://jabref.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/JabRef-${MY_PV}-src.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="mysql"
+
+#do not include antlr-3, use shipped antlr-3.0b5.jar ?
+#       >=dev-java/antlr-3.1.3:3[java]
+CDEPEND="dev-java/spin:0
+        dev-java/glazedlists:1.8
+        dev-java/jempbox:1.7
+        dev-java/pdfbox:1.7
+        >=dev-java/antlr-2.7.3:0[java]
+        >=dev-java/jgoodies-forms-1.1.0:0
+        dev-java/jgoodies-looks:2.0
+        >=dev-java/microba-0.4.3:0
+        dev-java/commons-logging:0
+        dev-java/jpf:1.5
+        dev-java/jpfcodegen:0
+        dev-java/jgoodies-forms:0
+        mysql? ( dev-java/jdbc-mysql:0 )"
+
+RDEPEND=">=virtual/jre-1.6
+        ${CDEPEND}"
+
+DEPEND=">=virtual/jdk-1.6
+        ${CDEPEND}"
+
+S="${WORKDIR}/${PN}-${MY_PV}"
+
+JAVA_ANT_REWRITE_CLASSPATH="true"
+#EANT_ANT_TASKS="jarbundler"
+EANT_BUILD_TARGET="jars"
+EANT_DOC_TARGET="docs"
+
+#do not include antlr-3, use shipped antlr-3.0b5.jar
+EANT_GENTOO_CLASSPATH="antlr,commons-logging,glazedlists-1.8,jempbox-1.7,jgoodies-forms,jgoodies-looks-2.0,jpf-1.5,microba,pdfbox-1.7,spin"
+EANT_GENTOO_CLASSPATH_EXTRA="${S}/lib/antlr-3.0b5.jar"
+
+src_install() {
+        java-pkg_newjar build/lib/JabRef-${MY_PV}.jar
+        java-pkg_dojar lib/antlr-3.0b5.jar
+        java-pkg_dojar lib/plugin/JPFCodeGenerator-rt.jar
+
+        #are not builded? Investigate why
+        #use doc && java-pkg_dojavadoc build/docs/API
+        dodoc src/txt/README
+
+        java-pkg_dolauncher ${PN} \
+                --main net.sf.jabref.JabRef
+
+        dodir /usr/share/${PN}/lib/plugins
+        keepdir /usr/share/${PN}/lib/plugins
+
+        java-pkg_register-optional-dependency jdbc-mysql
+
+        newicon src/images/JabRef-icon-48.png JabRef-icon.png || die
+        make_desktop_entry ${PN} JabRef JabRef-icon Office
+        echo "MimeType=text/x-bibtex;" >> "${D}/usr/share/applications/${PN}-${PN}.desktop"
+}
diff --git a/osx/JavaApplicationStub b/osx/JavaApplicationStub
new file mode 100644 (file)
index 0000000..d0d2cd5
Binary files /dev/null and b/osx/JavaApplicationStub differ
diff --git a/osx/OSXAdapter.class b/osx/OSXAdapter.class
new file mode 100644 (file)
index 0000000..8451e95
Binary files /dev/null and b/osx/OSXAdapter.class differ
diff --git a/src/Jabref.iml b/src/Jabref.iml
new file mode 100644 (file)
index 0000000..48f7c03
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/resource" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/images" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="jersey" level="project" />
+    <orderEntry type="library" name="sciplore" level="project" />
+    <orderEntry type="library" name="oo" level="project" />
+    <orderEntry type="library" name="plugin" level="project" />
+    <orderEntry type="library" name="lib" level="project" />
+  </component>
+</module>
+
index fd0f736..1833c12 100644 (file)
 
     <p>You may choose which database to search and you may opt to download the abstracts along with the cite information for each entry, by checking the <b>Include abstracts</b> checkbox.</p>
 
-       <p>To avoid excessive pressure on
-    the ACM Portal web site, JabRef will refuse to download
-    entries for more than a given number.
-       </p>
-
-       <p>At this point, frequent connections to ACM Portal will get your IP banned for hours. So JabRef will wait 5 seconds between each connection and the download process will be very slow.
+       <p>Frequent connections to ACM Portal may get your IP banned for hours. To avoid this, JabRef will for each search display a
+        preview of the first page of entries returned by the server. You can then choose which entries to download.
        </p>
 
        <p>Please email Aaron Chen <b>nextAaron@gmail.com</b> for any suggestions.</p>
index fc12f1d..1ad1823 100755 (executable)
@@ -7,7 +7,7 @@
         <h1>JabRef version @version@</h1>
 
         <div id="logo">
-        <img src="/images/JabRef-icon-48.png" alt="JabRef logo"/><br/>&copy; 2003-@year@
+        <img src="../images/JabRef-icon-48.png" alt="JabRef logo"/><br/>&copy; 2003-@year@
         </div>
 
        <p>JabRef is free software: you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
         Kolja Brix,
         Fr&eacute;d&eacute;ric Darboux,
         Guillaume Gardey,
+        Oscar Gustafsson,
         Cyrille d'Haese,
         Oliver Kopp,
         S M Mahbub Murshed,
@@ -92,7 +93,7 @@
         <h2>Third-party software used:</h2>
 
         <p>JabRef uses JGoodies
-        Looks 2.0.4 and JGoodies Forms 1.0.5, distributed by
+        Looks and JGoodies Forms, distributed by
         JGoodies (<code>http://www.jgoodies.com</code>) under the
         terms of the BSD License (see
         <code>http://www.opensource.org/licenses/bsd-license.html</code>
         (<code>http://publicobject.com/glazedlists</code>), which
         is distributed under the Lesser General Public License.</p>
 
-        <p>JabRef also uses the threading library Spin 1.3.1, which
+        <p>JabRef also uses the threading library Spin, which
         is distributed under the terms of the Lesser General Public
         License.</p>
 
         <p>JabRef uses the FontBox, JempBox, and PDFBox libraries for PDF
         handling, which are distributed under the Apache License. See 
         <code>http://pdfbox.apache.org</code> for more information.</p>
+        
+        <p>Under Ubuntu, JabRef uses Java Ayatana to add support for Unity Global
+            menu integration, which is licensed under the MIT License.
+            See <code>http://code.google.com/p/java-swing-ayatana/</code>
+         for more information.
 </body>
 </html>
index fd40cb0..a15eb23 100755 (executable)
       <li><a href="OpenOfficeIntegration.html">Using JabRef with OpenOffice.org or LibreOffice</a></li>
       <li><a href="ACMPortalHelp.html">Fetching entries from <em>ACM</em> Portal</a></li>
       <li><a href="CiteSeerHelp.html">Fetching entries from <em>CiteSeerX</em></a></li>
+      <li><a href="DiVAtoBibTeXHelp.html">Fetching entries from <em>DiVA</em></a></li>
+      <li><a href="DOItoBibTeXHelp.html">Fetching entries using the <em>DOI to BibTeX Converter</em></a></li>
+      <li><a href="GoogleScholarHelp.html">Fetching entries from <em>Google Scholar</em></a></li>
       <li><a href="IEEEXploreHelp.html">Fetching entries from <em>IEEExplore</em></a></li>
-      <li><a href="ISBNtoBibTeXHelp.html">Fetching entries using the <em>ISBN to BibTeX Converter</em></a>
+      <li><a href="ISBNtoBibTeXHelp.html">Fetching entries using the <em>ISBN to BibTeX Converter</em></a></li>
       <li><a href="MedlineHelp.html">Fetching entries from <em>Medline</em></a></li>
       <li><a href="JSTOR.html"><em>JStor</em> search</a></li>
       <li><a href="ScienceDirect.html"><em>ScienceDirect</em> search</a></li>
diff --git a/src/help/DOItoBibTeXHelp.html b/src/help/DOItoBibTeXHelp.html
new file mode 100644 (file)
index 0000000..8348d53
--- /dev/null
@@ -0,0 +1,20 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<link rel="stylesheet" type="text/css" href="jabref_help.css"/>
+</head>
+
+<body>
+    <h1>Fetching entries using the Digital Object Identifier (DOI)</h1>
+
+    <p>To use this feature, choose <b>Search -&gt; Web search</b>, and the
+    search interface will appear in the side pane. Select <b>DOI to BibTeX</b> in the dropdown menu.</p>
+
+    <p>This fetcher uses <a href="http://dx.doi.org/">http://dx.doi.org/</a>
+    to convert an DOI to a BibTeX entry.</p>
+
+    <p>Enter the DOI in the search field and press <b>Enter</b> or the <b>Fetch</b>
+    button. The entry will be fetched and added to your currently active
+    database. In case an error occurs, it is shown in a popup.</p>
+
+</body>
+</html>
diff --git a/src/help/DiVAtoBibTeXHelp.html b/src/help/DiVAtoBibTeXHelp.html
new file mode 100644 (file)
index 0000000..7d3a27a
--- /dev/null
@@ -0,0 +1,22 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<link rel="stylesheet" type="text/css" href="jabref_help.css"/>
+</head>
+
+<body>
+    <h1>Fetching entries from DiVA</h1>
+            
+    <p><a href="http://www.diva-portal.org/">DiVA (Digitala Vetenskapliga Arkivet)</a> is a database
+        with publications from about <a href="http://www.diva-portal.org/smash/aboutdiva.jsf">30</a>
+        Swedish universities and colleges of higher education.
+        
+    <p>To use this feature, choose <b>Search -&gt; Web search</b>, and the
+    search interface will appear in the side pane. Select <b>DiVA</b> in the dropdown menu.</p>
+
+    <p>Enter the DiVA identifier, e.g., <b>diva2:260746</b> in the search field
+        and press <b>Enter</b> or the <b>Fetch</b>
+    button. The entry will be fetched and added to your currently active
+    database. In case an error occurs, it is shown in a popup.</p>
+
+</body>
+</html>
diff --git a/src/help/GoogleScholarHelp.html b/src/help/GoogleScholarHelp.html
new file mode 100644 (file)
index 0000000..870a4a4
--- /dev/null
@@ -0,0 +1,23 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<link rel="stylesheet" type="text/css" href="jabref_help.css"/>
+</head>
+
+<body>
+
+    <h1>Search Google Scholar</h1>
+
+    <p>JabRef can search and download citations from Google Scholar.
+    To use this feature, choose <b>Search -&gt; Web search</b>, and the search interface will appear in the
+    side pane. Select <b>Google Scholar</b> in the dropdown menu.</p>
+
+    <p>To start a search, enter the words of your query, and press
+    <b>Enter</b> or the <b>Fetch</b> button.</p>
+
+    <p>Frequent connections to Google Scholar will cause Google to display a CAPTCHA challenge which JabRef
+        cannot pass. To avoid this, JabRef will for each search display a preview of the first page of
+        entries returned by the server. You can then choose which entries to download.
+       </p>
+
+</body>
+</html>
index 25360a6..8c51500 100644 (file)
@@ -22,6 +22,6 @@
 
     <p>The option to download BibTeX citations directly from IEEEXplore is not working yet.</p>
 
-    <p>Please email Aaron Chen <b>nextAaron@gmail.com</b> for any suggestions.</p>
+    <p>Please email Oscar Gustafsson <b>ogib73@gmail.com</b> or Aaron Chen <b>nextAaron@gmail.com</b> for any suggestions.</p>
 </body>
 </html>
index 931659c..01daaf3 100644 (file)
@@ -13,7 +13,7 @@
     to convert an ISBN to a BibTeX entry.</p>
 
     <p>Enter the ISBN number in the search field and press <b>Enter</b> or the <b>Fetch</b>
-    button. The entry will be fetched will be added to your currently active
+    button. The entry will be fetched and added to your currently active
     database. In case an error occurs, it is shown in a popup.</p>
 
 </body>
index fe55ae7..f1752ce 100644 (file)
@@ -6,6 +6,37 @@
 <body>
 
   <h1>Revision history</h1>
+    <h3>2.9 beta 2</h3>
+    <ul>
+      <li>Can control if the HTML converter should create subscripts and superscripts
+      as text or an equation via the preferences</li>
+      <li>Added initial support for adding curly brackets {} for certain
+        key words to keep the character case independent of .bst, e.g., for
+        names and abbreviations (use via "Cleanup entries") and can be controlled 
+        via preferences if it should be used at searches</li>
+      <li>Fixed author and DOI import from IEEE Xplore.</li>
+      <li>Improved import of equations in IEEE Xplore titles handling images, (sub) and /spl / representations</li>
+      <li>Rewrote the HTML import in a more general way. A few characters need to be added.</li>
+      <li>IEEE Xplore abstract fetching should now be working again.</li>
+      <li>Added DOI to BibTex entry fetcher.</li>
+      <li>Added ADS (The SAO/NASA Astrophysics Data System) fetcher by Ryo Igarashi (patch #120).</li>
+      <li>Reintroduced Google Scholar and ACM portal fetcher with entry preview to reduce server load.</li>
+      <li>Added alternate entry fetcher type where a preview can be displayed so the user can choose
+        which entries to download. This can reduce server load significantly and prevent users from
+        getting locked out of search services.</li>
+      <li>Fix for exception and minor bugs in HTML import parsing (patch 3575998 by Daniel Sv�rd)</li>
+      <li>HTML import handles more characters. Cleanup can also do HTML cleanup. (Patch 3582375 by Oscar Gustafsson)</li>
+      <li>During file renaming: More illegal characters are removed (idea by Sarel Botha)</li>
+      <li>Rudimentary support for IEEEtranBSTCTL added (patch 3582376 by Oscar Gustafsson)</li>
+      <li>":" is not filtered from the BibTeX keys any more (patch 3582376 by Oscar Gustafsson)</li>
+      <li>Changed internal look&feel setting (based on patch 3580605)</li>
+      <li>Custom importers nested in jars should be supported now (bug 3582838)</li>
+      <li>PDFContentImporter uses the DOI fetcher to fetch the BibTeX for the entry (if a DOI exists at the first page).</li>
+      <li>Moved migration of legacy PDF/PS fields from legacy tools to clean up dialog.</li>
+      <li>MHT files can now also be linked by drag'n'drop without the need to configure "external file types".</li>
+      <li>Adds support for Ubunut's global menu and HUD integration by using java-swing-ayatana (feature #796).</li>
+      <li>Updates PostgreSQL support to PostgreSQL 9.2</li>
+    </ul>
     <h3>2.9 beta</h3>
     <ul>
       <li>Replaced notification dialog after moving/renaming linked file by status message.</li>
index 7517e1e..a3b5fa7 100755 (executable)
@@ -7,7 +7,7 @@
         <h1>JabRef version @version@</h1>
 
         <div id="logo">
-        <img src="/images/JabRef-icon-48.png" alt="JabRef logo"/><br/>&copy; 2003-@year@
+        <img src="../../images/JabRef-icon-48.png" alt="JabRef logo"/><br/>&copy; 2003-@year@
         </div>
 
         <p>JabRef kan frit distribueres under betingelserne i
@@ -22,6 +22,7 @@
         Kolja Brix,
         Fr&eacute;d&eacute;ric Darboux,
         Guillaume Gardey,
+        Oscar Gustafsson,
         Cyrille d'Haese,
         Oliver Kopp,
         S M Mahbub Murshed,
@@ -89,7 +90,7 @@
 
         <h2>Tredjepartssoftware anvendt:</h2>
 
-        <p>JabRef bruger JGoodies Looks 2.0.4 og JGoodies Forms 1.0.5,
+        <p>JabRef bruger JGoodies Looks og JGoodies Forms,
         distribueret af JGoodies
         (<code>http://www.jgoodies.com</code>) under betingelserne i
         BSD License (se
         (<code>http://publicobject.com/glazedlists</code>), som
         distribueres under Lesser General Public License.</p>
 
-        <p>JabRef benytter ogs&aring; tr&aring;dbiblioteket Spin
-        1.3.1, som distribueres under betingelserne i Lesser General
+        <p>JabRef benytter ogs&aring; tr&aring;dbiblioteket Spin
+            som distribueres under betingelserne i Lesser General
         Public License.</p>
 
         <p>Der er brugt visse GUI-komponenter fra Microba-biblioteket,
index dca4399..38069b1 100644 (file)
@@ -7,7 +7,7 @@
         <h1>JabRef Version @version@</h1>
 
         <div id="logo">
-        <img src="/images/JabRef-icon-48.png" alt="JabRef logo"/><br/>&copy; 2003-@year@
+        <img src="../../images/JabRef-icon-48.png" alt="JabRef logo"/><br/>&copy; 2003-@year@
         </div>
 
         <p>JabRef ist frei verf&uuml;gbar unter den Bedingungen der
@@ -21,6 +21,7 @@
         Kolja Brix,
         Fr&eacute;d&eacute;ric Darboux,
         Guillaume Gardey,
+        Oscar Gustafsson,
         Cyrille d'Haese,
         Oliver Kopp,
         S. M. Mahbub Murshed,
@@ -87,7 +88,7 @@
         <h2>Benutzte Fremdsoftware:</h2>
 
         <p>JabRef benutzt JGoodies
-        Looks 2.0.4 und JGoodiesForms 1.0.5, das von JGoodies
+        Looks und JGoodies Forms, das von JGoodies
         (<code>http://www.jgoodies.com</code>) unter den
         Bedingungen der BSD-Lizenz vertrieben wird (siehe
         <code>http://www.opensource.org/licenses/bsd-license.html</code>
         vertrieben wird.</p>
 
         <p>JabRef benutzt dar&uuml;ber hinaus die "threading
-        library" Spin 1.3.1, die ebenfalls unter den Bedingungen
+        library" Spin, die ebenfalls unter den Bedingungen
         der Lesser General Public License vertrieben wird.</p>
 
         <p>F&uuml;r die einfache Auswahl und den Umgang mit
index f3dcd82..6570168 100644 (file)
@@ -8,7 +8,7 @@
         <h1>JabRef version @version@</h1>
 
         <div id="logo">
-        <img src="/images/JabRef-icon-48.png" alt="JabRef logo"/><br/>&copy; 2003-@year@
+        <img src="../../images/JabRef-icon-48.png" alt="JabRef logo"/><br/>&copy; 2003-@year@
         </div>
 
         <p>JabRef est librement distribuable selon les termes de la
@@ -30,6 +30,7 @@
         Kolja Brix,
         Fr&eacute;d&eacute;ric Darboux,
         Guillaume Gardey,
+        Oscar Gustafsson,
         Cyrille d'Haese,
         Oliver Kopp,
         S M Mahbub Murshed,
index d557d34..427680d 100644 (file)
@@ -14,6 +14,7 @@
       <li><a href="BaseFrameHelp.html">La fen&ecirc;tre principale de JabRef</a></li>
       <li><a href="EntryEditorHelp.html">&Eacute;diteur d'entr&eacute;es</a></li>
       <li><a href="Autosave.html">Sauvegarde automatique</a></li>
+      <li><a href="SpecialFieldsHelp.html">Champs spéciaux</a></li>
     </ul>
 
     <h2>Champs</h2>
       <li><a href="OpenOfficeIntegration.html">Utiliser JabRef avec OpenOffice.org ou LibreOffice</a></li>
       <li><a href="ACMPortalHelp.html">R&eacute;cup&eacute;ration des entr&eacute;es depuis le portail <em>ACM</em></a></li>
       <li><a href="CiteSeerHelp.html">R&eacute;cup&eacute;ration des entr&eacute;es depuis <em>CiteSeerX</em></a></li>
+      <li><a href="DOItoBibTeXHelp.html">R&eacute;cup&eacute;ration des entr&eacute;es avec le convertisseur <em>DOI vers BibTeX</em></a></li>
+      <li><a href="GoogleScholarHelp.html">R&eacute;cup&eacute;ration des entr&eacute;es depuis <em>Google Scholar</em></a></li>      
       <li><a href="IEEEXploreHelp.html">R&eacute;cup&eacute;ration des entr&eacute;es depuis <em>IEEExplore</em></a></li>
+      <li><a href="ISBNtoBibTeXHelp.html">R&eacute;cup&eacute;ration des entr&eacute;es avec le convertisseur <em>ISBN vers BibTeX</em></a></li>
       <li><a href="MedlineHelp.html">R&eacute;cup&eacute;ration des entr&eacute;es depuis <em>Medline</em></a></li>
       <li><a href="JSTOR.html">R&eacute;cup&eacute;ration des entr&eacute;es depuis <em>JStor</em></a></li>
       <li><a href="ScienceDirect.html">R&eacute;cup&eacute;ration des entr&eacute;es depuis <em>ScienceDirect</em></a></li>
diff --git a/src/help/fr/DOItoBibTeXHelp.html b/src/help/fr/DOItoBibTeXHelp.html
new file mode 100644 (file)
index 0000000..476927f
--- /dev/null
@@ -0,0 +1,24 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<link rel="stylesheet" type="text/css" href="jabref_help.css"/>
+</head>
+
+<body>
+    <h1>R&eacute;cup&eacute;ration d'entr&eacute;es en utilisant
+         l'identifiant d'objet num&eacute;rique (DOI)</h1>
+
+    <p>Pour utiliser cette fonction, choisissez <b>Recherche -&gt; recherche Web</b>,
+    et l'interface de recherche s'affichera dans le panneau lat&eacute;ral.
+    S&eacute;lectionnez <b>DOI vers BibTeX</b> dans le menu d&eacute;roulant.</p>
+
+    <p>Ce moteur de recherche utilise
+    <a href="http://dx.doi.org/">http://dx.doi.org/</a>
+    pour convertir un DOI en une entr&eacute;e BibTeX.</p>
+
+    <p>Entrer le DOI dans le champ de recherche et presser sur <b>Entrer</b>
+        ou sur le bouton <b>Recherche</b>.
+        L'entr&eacute;e sera r&eacute;cup&eacute;r&eacute;e et ajout&eacute;e &agrave; votre base actuellement active.
+        En cas de survenue d'une erreur, elle s'affichera dans une fen&ecirc;tre.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/GoogleScholarHelp.html b/src/help/fr/GoogleScholarHelp.html
new file mode 100644 (file)
index 0000000..8a65818
--- /dev/null
@@ -0,0 +1,26 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<link rel="stylesheet" type="text/css" href="jabref_help.css"/>
+</head>
+
+<body>
+
+    <h1>Recherche Google Scholar</h1>
+
+    <p>JabRef peut rechercher et t&eacute;l&eacute;charger des citations depuis Google Scholar.
+    Pour utiliser cette fonction, choisissez <b>Recherche -&gt; recherche Web</b>,
+    et l'interface de recherche s'affichera dans le panneau lat&eacute;ral.
+    S&eacute;lectionnez <b>Google Scholar</b> dans le menu d&eacute;roulant.</p>
+        
+    
+    <p>Pour d&eacute;marrer une recherche, entrer les mots de votre requ&ecirc;te
+        et presser sur <b>Entrer</b> ou sur le bouton <b>Recherche</b>.</p>
+
+    <p>De fr&eacute;quentes connexions &agrave; Google Scholar feront que Google affichera un
+        test CAPTCHA que JabRef ne peut pas passer. Pour &eacute;viter cette situation,
+        JabRef affichera pour chaque recherche une pr&eacute;visualisation de la 
+        premi&egrave;re page des entr&eacute;es renvoy&eacute;es par le serveur. Vous pouvez alors
+        choisir quelles entr&eacute;es doivent &ecirc;tre t&eacute;l&eacute;charg&eacute;es.</p>
+
+</body>
+</html>
diff --git a/src/help/fr/ISBNtoBibTeXHelp.html b/src/help/fr/ISBNtoBibTeXHelp.html
new file mode 100644 (file)
index 0000000..129f9f5
--- /dev/null
@@ -0,0 +1,23 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<link rel="stylesheet" type="text/css" href="jabref_help.css"/>
+</head>
+
+<body>
+    <h1>R&eacute;cup&eacute;ration d'entr&eacute;es &agrave; partir du num&eacute;ro ISBN</h1>
+    
+    <p>Pour utiliser cette fonction, choisissez <b>Recherche -&gt; recherche Web</b>,
+        et l'interface de recherche s'affichera dans le panneau lat&eacute;ral.
+        S&eacute;lectionnez <b>ISBN vers BibTeX</b> dans le menu d&eacute;roulant.</p>
+
+    <p>Ce moteur de recherche utilise
+        <a href="http://manas.tungare.name/software/isbn-to-bibtex/">Manas Tungare's ISBN to BibTeX Converter</a>
+        pour convertir un ISBN en une entr&eacute;e BibTeX.</p>
+
+    <p>Entrer le num&eacute;ro ISBN dans le champ de recherche et presser sur <b>Entrer</b>
+        ou sur le bouton <b>Recherche</b>.
+        L'entr&eacute;e sera r&eacute;cup&eacute;r&eacute;e et ajout&eacute;e &agrave; votre base actuellement active.
+        En cas de survenue d'une erreur, elle s'affichera dans une fen&ecirc;tre.</p>
+
+</body>
+</html>
index 767fe59..dbc2deb 100644 (file)
@@ -6,6 +6,63 @@
 <body>
 
   <h1>Historique des r&eacute;visions (en anglais)</h1>
+  <h3>2.9 beta</h3>
+    <ul>
+      <li>Replaced notification dialog after moving/renaming linked file by status message.</li>
+      <li>Replaced dialog warnings about empty/duplicate key in entry editor by status line messages,
+      to prevent lockup if Save button is pressed directly.</li>
+      <li>Replaced window icon with 48x48 image.</li>
+      <li>Added local undo/redo handling for entry editor text fields.</li>
+      <li>Added special field functionality for ranking, marking as relevant,
+      marking as quality assured, and prioritizing. Can be enabled by "Entry table columns".
+      Based on the work by Igor Chernyavsky, Florian Straßer, and Marius Kleiner.</li>
+      <li>Added PDF preview functionality to the preview panel. Configurable via "Entry preview" settings.</li>
+      <li>Group edit dialog now closes when Escape is pressed.</li>
+      <li>Fixed MS bib import, month was lost on import.</li>
+      <li>Generate key action in entry editor now honors key overwrite settings.</li>
+      <li>Fixed bug when importing XMP data from PDF, file will now be linked from the new entry.</li>
+      <li>Fixed bug in layout processing - quoted formatter argments are now handled correctly.</li>
+      <li>Fixed bug 3545394: null and curly brackets in custom export filter.</li>
+      <li>Added "Manage keywords" popup menu to manage common keywords of selected entries.</li>
+      <li>Added support for pushing citations to TeXstudio (requires TeXstudio >=2.4)</li>
+      <li>Text-based citations can now be imported using FreeCite by Brown University
+      (http://freecite.library.brown.edu). By Kai Mindermann and Daniel Maurer.</li>
+      <li>JabRef supports synchronization of unlinked PDFs. Feature request "[2163626] Scan database - find unlinked files".
+      Based on patch 3122104. </li>
+      <li>Added command line argument -d/-prdef for resetting preferences to default values. Can
+      reset a comma-separated list of preference values, or all values.</li>
+      <li>Added small right-click popup menu at each tab</li>
+      <li>A PDF can also be dropped to the preview panel to trigger linking it</li>
+      <li>Drag'n'drop of text from the preview panel to other applications is now working</li>
+      <li>Added highlighting in preview area for search text (based on patch 3121914 by
+      Maximilian Lengsfeld).</li>
+      <li>New context menu option "Switch preview layout" in the preview panel. </li>
+      <li>BibTeX key generator patterns can now be stored in per database (implements feature 3495993)</li>
+      <li>Braces around author names are now dropped internally. They remain in the .bib though
+      Effects (incomplete list): Authors in the main window are shown without braces,
+      autocompletion does not show these braces</li>
+      <li>Autocompletion: ";" is now also a delimiter allowing "keyword1; keyword2" in the keyword fields</li>
+      <li>Autocompletion: the amount of characters to trigger autocompletion may now be configured
+      (default is 2)</li>
+      <li>Autocompletion: in case lower case letters are used, the search is case-insenstive,
+      otherwise the search is case sensitive.</li>
+      <li>Autocompletion: new preference to choose how to deal with first names 
+      (always full/always abbreviated/both full and abbreviated)</li>
+      <li>Added functionality "clean up entries" 
+      - Includes clean up DOI functionality by Florian Straßer and Marius Kleiner
+        (move of DOIs from ee, note, and url field is supported)
+      - Option to rename PDF of entry according to configured PDF-naming-scheme
+        (by Florian Straßer and Marius Kleiner)
+      - make file paths relative
+      - clean up month (functionality based on patch 3470076 by Mathias Walter)
+      - clean up pages
+      - fix superscripts</li>
+    <li>New "ISBN to BibTeX" fetcher. Uses the online "ISBN to BibTeX Converter" service by Manas Tungare.</li>
+    <li>Added support for drag'n'drop of tabs by Florian Straßer and Marius Kleiner.</li>
+    <li>PDF import dialog now always stores settings: checkbox removed</li>
+    <li>float search now also jumps to first entry if entry editor is opened</li>
+    <li>usability improvements of "content selectors"</li>
+    </ul>
   <h3>Version 2.8.1</h3>
     <ul><li>New DBLP fetcher. Patch 3462232 by Sascha Hunold.</li>
     <li>Disabled ACM portal fetcher to avoid users of getting banned.</li>
diff --git a/src/help/fr/SpecialFieldsHelp.html b/src/help/fr/SpecialFieldsHelp.html
new file mode 100644 (file)
index 0000000..cdd77dd
--- /dev/null
@@ -0,0 +1,50 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<link rel="stylesheet" type="text/css" href="jabref_help.css"/>
+</head>
+
+<body>
+
+<h1>Special Fields</h1>
+
+<p>Special fields offer the functionality </p>
+<ul>
+<li>rate read papers</li>
+<li>mark papers as relevant for the work</li>
+<li>mark Bibtex entries as quality assured, and </li>
+<li>prioritize unread papers.</li>
+</ul>
+<p>
+The main difference from the marked entry is that the rated entry is not floating by default and only highlight the number column. Thus, an entry may be both marked and rated.
+</p>
+<p>
+Each special field may be turned on and off in the settings.
+</p>
+
+<h2>Types of Fields</h2>
+
+<h3>Ranking</h3>
+<p>The aim is to add a functionality to set a range of &ldquo;positive&rdquo; ratings. JabRef offers a rank from one to five stars to rate papers.</p>
+
+<h3>Relevance</h3>
+<p>An entry may be marked as relevant.</p>
+
+<h3>Quality Assured</h3>
+<p>An entry may be marked as quality assured. The intention is to mark Bibtex entries, where a thorough checking of the field contents has been done.</p>
+
+<h3>Priority</h3>
+<p>One may prioritize entries from prio3 (low) to prio1 (high). The main intention is to prioritize unread papers.</p>
+
+<h2>Storage in the Bibtex Entry</h2>
+<p>Internally, each special field is stored in a separate Bibtex field. If &ldquo;Write values of
+special fields as separate fields to BibTeX&rdquo; is active, these fields are also written when the
+database is saved. JabRef also offers synchronizing the fields with keywords. This is enabled by the
+setting &ldquo;Synchronize with keywords&rdquo;. If this setting is active, then each change in a
+special field is reflected in the keyword field. Vice versa, each change in a keyword also leads to
+a change in the special field. Additionally, when loading a the database or pasting a new entry, the
+keywords are used to set the special field values.
+</p>
+
+</body>
+</html>
+
index d7fe464..9ccbfe8 100755 (executable)
@@ -7,7 +7,7 @@
         <h1>JabRef versi @version@</h1>
 
         <div id="logo">
-        <img src="/images/JabRef-icon-48.png" alt="JabRef logo"/><br/>&copy; 2003-@year@
+        <img src="../../images/JabRef-icon-48.png" alt="JabRef logo"/><br/>&copy; 2003-@year@
         </div>
 
         <p>JabRef dapat disebarkan tanpa bayar mengikut syarat dari
@@ -22,6 +22,7 @@
         Kolja Brix,
         Fr&eacute;d&eacute;ric Darboux,
         Guillaume Gardey,
+        Oscar Gustafsson,
         Cyrille d'Haese,
         Oliver Kopp,
         S M Mahbub Murshed,
@@ -91,7 +92,7 @@
         <h2>Program tambahan yang digunakan:</h2>
 
         <p>JabRef menggunakan JGoodies
-        Looks 2.0.4 dan JGoodies Forms 1.0.5, yang disebarkan oleh
+        Looks dan JGoodies Forms, yang disebarkan oleh
         JGoodies (<code>http://www.jgoodies.com</code>) mengikuti syarat dari Lisensi (Lihat
         <code>http://www.opensource.org/licenses/bsd-license.html</code>
         untuk perincian lanjut).</p>
         (<code>http://publicobject.com/glazedlists</code>), yang
         disebarkan mengikut Lisensi Lesser General Public.</p>
 
-        <p>JabRef juga menggunakan threading library Spin 1.3.1, yang
+        <p>JabRef juga menggunakan threading library Spin, yang
         disebarkan mengikut syarat Lisensi Lesser General Public
         .</p>
 
index 5776819..bc5b2aa 100755 (executable)
@@ -8,7 +8,7 @@
         <h1>JabRef 第 @version@ 版</h1>
 
         <div id="logo">
-        <img src="/images/JabRef-icon-48.png" alt="JabRef logo"/><br/>&copy; 2003-@year@
+        <img src="../../images/JabRef-icon-48.png" alt="JabRef logo"/><br/>&copy; 2003-@year@
         </div>
 
         <p>JabRefは、GNU <a href="License.html">General Public License</a>, version 2の下で自由に配布可能です。</p>
@@ -21,6 +21,7 @@
         Kolja Brix,
         Fr&eacute;d&eacute;ric Darboux,
         Guillaume Gardey,
+        Oscar Gustafsson,
         Cyrille d'Haese,
         Oliver Kopp,
         S M Mahbub Murshed,
@@ -90,7 +91,7 @@
 
         <h2>使用しているサードパーティ・ソフトウェア:</h2>
 
-        <p>JabRefは、JGoodies (<code>http://www.jgoodies.com</code>) がBSDライセンス (詳細については<code>http://www.opensource.org/licenses/bsd-license.html</code>を参照) の下で配布しているJGoodies Looks 2.0.4およびJGoodies Forms 1.0.5を使用しています。</p>
+        <p>JabRefは、JGoodies (<code>http://www.jgoodies.com</code>) がBSDライセンス (詳細については<code>http://www.opensource.org/licenses/bsd-license.html</code>を参照) の下で配布しているJGoodies Looks およびJGoodies Forms を使用しています。</p>
 
         <p>また、<a href="../jgoodies.html">これらの条件</a>で配布されているKarsten Lentzschによる二つのクラス (SimpleInternalFrameおよびUIFSplitPane) も含まれています。</p>
 
 
         <p>JabRefは、表の表示とフィルタリングにGlazed Listsライブラリ (<code>http://publicobject.com/glazedlists</code>) を使用しています。これはLesser General Public Licenseの下で配布されています。</p>
 
-        <p>JabRefは、スレッディングライブラリSpin 1.3.1も使用しており、これはLesser General Public Licenseの下で配布されています。</p>
+        <p>JabRefは、スレッディングライブラリSpin も使用しており、これはLesser General Public Licenseの下で配布されています。</p>
 
         <p>Microbaライブラリ由来のいくつかのGUIコンポーネントが使用されており、これはBSDスタイルライセンスの下でライセンスされています。詳しい情報については<code>http://sourceforge.net/projects/microba/</code>をご覧ください。</p>
 
index 4170aab..f201c22 100644 (file)
@@ -6,7 +6,7 @@
 <body>
     <h1>JGoodies</h1>
 
-    Copyright (c) 2003 JGoodies Karsten Lentzsch. All Rights
+    Copyright (c) 2002-2012 JGoodies Karsten Lentzsch. All Rights
     Reserved. 
 
     <p>Redistribution and use in source and binary forms, with or
index 7f30a50..85a4e0a 100644 (file)
Binary files a/src/images/JabRef-Logo.icns and b/src/images/JabRef-Logo.icns differ
diff --git a/src/images/JabRef-icon-mac.svg b/src/images/JabRef-icon-mac.svg
new file mode 100644 (file)
index 0000000..9269439
--- /dev/null
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="48" height="48" id="svg2" sodipodi:version="0.32" inkscape:version="0.45" sodipodi:docbase="/Users/stefan/Desktop" sodipodi:docname="JabRef-icon.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.0" sodipodi:modified="TRUE" inkscape:export-filename="/Users/stefan/Desktop/JabRef-icon.png" inkscape:export-xdpi="173.03" inkscape:export-ydpi="173.03">
+  <defs id="defs4">
+    <linearGradient id="linearGradient3183">
+      <stop style="stop-color:#4f5f8f;stop-opacity:1;" offset="0" id="stop3185"/>
+      <stop style="stop-color:#3a4669;stop-opacity:1;" offset="1" id="stop3187"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3167">
+      <stop id="stop3169" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop id="stop3171" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2915">
+      <stop id="stop2917" offset="0" style="stop-color:white;stop-opacity:1;"/>
+      <stop id="stop2919" offset="1" style="stop-color:#dadce0;stop-opacity:1;"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2909">
+      <stop id="stop2911" offset="0" style="stop-color:white;stop-opacity:1;"/>
+      <stop id="stop2913" offset="1" style="stop-color:#cfd1d7;stop-opacity:1;"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2897">
+      <stop style="stop-color:#dadee7;stop-opacity:1;" offset="0" id="stop2899"/>
+      <stop style="stop-color:#1e68c6;stop-opacity:1;" offset="1" id="stop2901"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2889">
+      <stop style="stop-color:#e0e4ee;stop-opacity:1;" offset="0" id="stop2891"/>
+      <stop style="stop-color:#e0e4ee;stop-opacity:0;" offset="1" id="stop2893"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2915" id="linearGradient2971" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.115225,0,0,1,-1.889007,46.1244)" x1="329.18756" y1="289.87192" x2="598.66205" y2="548.62866"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2909" id="linearGradient2974" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.082601,0,0,1,-1.374219,40)" x1="145.45497" y1="332.74286" x2="326.12537" y2="576.18854"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2909" id="linearGradient2983" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.119652e-2,0,0,7.966468e-2,422.1323,954.272)" x1="145.45497" y1="332.74286" x2="326.12537" y2="576.18854"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2915" id="linearGradient2985" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.119652e-2,0,0,7.966468e-2,424.2434,954.7598)" x1="329.18756" y1="289.87192" x2="598.66205" y2="548.62866"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2909" id="linearGradient3878" gradientUnits="userSpaceOnUse" gradientTransform="matrix(3.824753e-2,0,0,3.538487e-2,403.2956,1005.814)" x1="145.45497" y1="332.74286" x2="326.12537" y2="576.18854"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2915" id="linearGradient3880" gradientUnits="userSpaceOnUse" gradientTransform="matrix(3.863231e-2,4.140938e-3,-3.672702e-3,3.351102e-2,404.9189,1005.265)" x1="329.18756" y1="289.87192" x2="598.66205" y2="548.62866"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient3167" id="linearGradient3165" x1="413.51489" y1="1009.7088" x2="418.98639" y2="1030.8461" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.1676489,0,0,1.0769432,-42.634492,-73.039372)"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient3167" id="linearGradient3181" x1="405.51611" y1="1009.0013" x2="412.79776" y2="1017.7543" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient3183" id="linearGradient3189" x1="403.69495" y1="1008.1696" x2="426.66931" y2="1033.0624" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient3167" id="linearGradient3217" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.1676489,0,0,1.0769432,-60.486221,-72.099807)" x1="413.51489" y1="1009.7088" x2="418.98639" y2="1030.8461"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient3167" id="linearGradient3219" gradientUnits="userSpaceOnUse" x1="405.51611" y1="1009.0013" x2="412.79776" y2="1017.7543" gradientTransform="matrix(1.7988326,0,0,1.7988326,-724.41667,-1811.5399)"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2915" id="linearGradient3221" gradientUnits="userSpaceOnUse" gradientTransform="matrix(6.9493059e-2,7.4488542e-3,-6.6065761e-3,6.0280715e-2,3.9646274,-3.2364708)" x1="329.18756" y1="289.87192" x2="598.66205" y2="548.62866"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2909" id="linearGradient3223" gradientUnits="userSpaceOnUse" gradientTransform="matrix(6.8800903e-2,0,0,6.3651458e-2,1.0445825,-2.2489117)" x1="145.45497" y1="332.74286" x2="326.12537" y2="576.18854"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient3183" id="linearGradient3225" gradientUnits="userSpaceOnUse" x1="403.69495" y1="1008.1696" x2="426.66931" y2="1033.0624" gradientTransform="matrix(1.7988326,0,0,1.7988326,-724.41667,-1811.5399)"/>
+  </defs>
+  <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" gridtolerance="50" guidetolerance="10" objecttolerance="10" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="5.3216135" inkscape:cx="38.815775" inkscape:cy="21.291729" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" inkscape:guide-bbox="false" showguides="true" inkscape:window-width="1118" inkscape:window-height="800" inkscape:window-x="0" inkscape:window-y="22" width="48px" height="48px"/>
+  <metadata id="metadata7">
+    <rdf:RDF>
+      <cc:Work rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1">
+    <rect style="opacity:1;fill:url(#linearGradient3225);fill-opacity:1" id="rect2184" width="44.9123" height="44.777832" x="1.7629348" y="1.9884412" inkscape:export-xdpi="173.03" inkscape:export-ydpi="173.03" inkscape:export-filename="/home/alver/div/smalltheme/jabrefIkon-48.png" ry="5.0703583"/>
+    <path style="fill:url(#linearGradient3223);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 9.230458,6.042987 C 14.734544,6.042987 19.283468,6.1753811 19.283468,6.1753811 C 19.283468,6.1753811 24.803851,10.308919 21.946441,34.112871 C 21.123493,38.723638 17.071461,42.817062 12.120427,42.817062 C 7.1693556,42.817062 4.3251315,39.89288 4.3251315,36.482293 C 9.4349678,38.791815 13.223794,37.622933 14.544767,37.076267 C 15.178388,36.814178 17.532772,35.712213 17.49282,30.147344 C 17.400072,17.232806 18.660136,14.427527 9.230458,6.042987 z " id="path3874" sodipodi:nodetypes="cccscssc" inkscape:export-filename="/home/alver/div/smalltheme/jabrefIkon-48.png" inkscape:export-xdpi="173.03" inkscape:export-ydpi="173.03"/>
+    <path style="fill:url(#linearGradient3221);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.05348015px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 23.393566,6.0886773 C 36.731928,6.7477697 46.75263,17.557136 33.602104,24.722605 C 29.911636,27.055511 39.058934,38.657261 42.60508,43.909313 C 33.547329,40.892132 25.628364,31.6634 26.201311,25.390871 C 26.584264,20.852056 33.99263,21.159118 34.298737,18.36607 C 34.604827,15.573203 29.431546,15.86983 23.393566,6.0886773 z " id="path3876" sodipodi:nodetypes="ccccsc" inkscape:export-filename="/home/alver/div/smalltheme/jabrefIkon-48.png" inkscape:export-xdpi="173.03" inkscape:export-ydpi="173.03"/>
+    <path style="opacity:0.71111115;fill:url(#linearGradient3219);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 2.416732,36.468262 C 2.1420683,34.306425 1.8027545,27.329653 1.7829493,20.312407 C 1.7631442,13.294981 0.060980919,7.0555498 3.0662725,3.5749887 C 6.0762591,0.089031076 14.405519,2.018279 22.367854,2.0531764 C 30.330189,2.0882535 38.094615,2.0878938 40.143881,2.2639995 C 42.187661,2.4397454 19.202754,2.2114736 10.898821,8.979941 C 2.5360486,15.796078 2.9674626,40.803449 2.416732,36.468262 z " id="path3173" sodipodi:nodetypes="cszszzz"/>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/src/images/reference_list.xcf b/src/images/reference_list.xcf
new file mode 100644 (file)
index 0000000..6333b88
Binary files /dev/null and b/src/images/reference_list.xcf differ
index f652a59..fb8f332 100644 (file)
@@ -44,8 +44,15 @@ public class AdvancedTab extends JPanel implements PrefsTab {
     JPanel p1 = new JPanel(),
         p2 = new JPanel();
     String oldLnf = "";
-    boolean oldUseDef, oldBiblMode=false;
+    boolean oldUseDef, oldBiblMode=false, oldConvertToEquation, oldCaseKeeperOnSearch;
     int oldPort = -1;
+    
+    public final static String PREF_IMPORT_CONVERT_TO_EQUATION = "importFileConvertToEquation"; 
+    public final static String PREF_IMPORT_FILENAMEPATTERN = "importFileNamePattern"; 
+       
+    private JCheckBox useConvertToEquation;
+    private JCheckBox useCaseKeeperOnSearch;
+       
 
     public AdvancedTab(JabRefPreferences prefs, HelpDialog diag) {
         _prefs = prefs;
@@ -67,8 +74,9 @@ public class AdvancedTab extends JPanel implements PrefsTab {
             clName.setEnabled(((JCheckBox)e.getSource()).isSelected());
         }
         });
-
-
+    useConvertToEquation = new JCheckBox(Globals.lang("Prefer converting subscripts and superscripts to equations rather than text"));
+    useCaseKeeperOnSearch = new JCheckBox(Globals.lang("Add {} to specified title words on search to keep the correct case"));
+       
     FormLayout layout = new FormLayout
         ("1dlu, 8dlu, left:pref, 4dlu, fill:3dlu",//, 4dlu, fill:pref",// 4dlu, left:pref, 4dlu",
          "");
@@ -77,9 +85,7 @@ public class AdvancedTab extends JPanel implements PrefsTab {
 
     if (!Globals.ON_MAC) {
         builder.appendSeparator(Globals.lang("Look and feel"));
-        JLabel lab = new JLabel(Globals.lang("Default look and feel")+": "
-                 +(Globals.ON_WIN ? GUIGlobals.windowsDefaultLookAndFeel :
-                   GUIGlobals.linuxDefaultLookAndFeel));
+        JLabel lab = new JLabel(Globals.lang("Default look and feel")+": "+UIManager.getSystemLookAndFeelClassName());
         builder.nextLine();
         builder.append(pan);
         builder.append(lab);
@@ -141,6 +147,15 @@ public class AdvancedTab extends JPanel implements PrefsTab {
     builder.append(new JPanel());
     builder.append(biblatexMode);
     
+    builder.nextLine();    
+    builder.appendSeparator(Globals.lang("Import conversions"));
+    builder.nextLine();
+    builder.append(new JPanel());
+    builder.append(useConvertToEquation);
+    builder.nextLine();
+    builder.append(pan);
+    builder.append(useCaseKeeperOnSearch);
+        
     pan = builder.getPanel();
     pan.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
     setLayout(new BorderLayout());
@@ -162,6 +177,10 @@ public class AdvancedTab extends JPanel implements PrefsTab {
         useIEEEAbrv.setSelected(Globals.prefs.getBoolean("useIEEEAbrv"));
         oldBiblMode = Globals.prefs.getBoolean("biblatexMode");
         biblatexMode.setSelected(oldBiblMode);
+        oldConvertToEquation = Globals.prefs.getBoolean("useConvertToEquation");
+        useConvertToEquation.setSelected(oldConvertToEquation);
+        oldCaseKeeperOnSearch = Globals.prefs.getBoolean("useCaseKeeperOnSearch");
+        useCaseKeeperOnSearch.setSelected(oldCaseKeeperOnSearch);
     }
 
     public void storeSettings() {
@@ -177,7 +196,7 @@ public class AdvancedTab extends JPanel implements PrefsTab {
             int port = Integer.parseInt(remoteServerPort.getText());
             if (port != oldPort) {
                 _prefs.putInt("remoteServerPort", port);
-                /*JOptionPane.showMessageDialog(null, Globals.lang("You have changed the menu and label font size. "
+                /*JOptionPane.showMessageDialog(null, Glbals.lang("You have changed the menu and label font size. "
                         + "You must restart JabRef for this to come into effect."), Globals.lang("Changed font settings"),
                         JOptionPane.WARNING_MESSAGE);*/
             }
@@ -217,6 +236,9 @@ public class AdvancedTab extends JPanel implements PrefsTab {
                        .concat("You must restart JabRef for this change to come into effect."),
                     Globals.lang("BibLaTeX mode"), JOptionPane.WARNING_MESSAGE);
         }
+        
+        _prefs.putBoolean("useConvertToEquation", useConvertToEquation.isSelected());
+        _prefs.putBoolean("useCaseKeeperOnSearch", useCaseKeeperOnSearch.isSelected());
     }
 
     public boolean readyToClose() {
index 034c052..e6a2c41 100644 (file)
@@ -314,7 +314,6 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
        }
 
     public void output(String s) {
-    //Util.pr("\""+s+"\""+(SwingUtilities.isEventDispatchThread()));
         if (!suppressOutput)
             frame.output(s);
     }
@@ -607,10 +606,10 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
                           undoManager.addEdit(ce);
                           //entryTable.clearSelection();
                           //entryTable.revalidate();
-                          output(Globals.lang("Pasted")+" "+
-                                 (bes.length>1 ? bes.length+" "+
-                                  Globals.lang("entries") : "1 "+Globals.lang("entry"))
-                                 +".");
+                          output(Globals.lang("Pasted") + " " +
+                                  (bes.length > 1 ? bes.length + " " +
+                                          Globals.lang("entries") : "1 " + Globals.lang("entry"))
+                                  + ".");
                           markBaseChanged();
                                  
                           if (Globals.prefs.getBoolean("autoOpenForm")) {
@@ -1016,8 +1015,8 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
 
                         if (keys.size() == bes.length)
                             // All entries had keys.
-                            output(Globals.lang((bes.length > 1) ? "Copied keys"
-                                                "Copied key")+".");
+                            output(bes.length > 1 ? Globals.lang("Copied keys")
+                                                  : Globals.lang("Copied key")+".");
                         else
                             output(Globals.lang("Warning")+": "+(bes.length-keys.size())
                                    +" "+Globals.lang("out of")+" "+bes.length+" "+
@@ -1524,15 +1523,10 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
               
               for (SpecialFieldValue prio: Priority.getInstance().getValues()) {
                      actions.put(prio.getActionName(), prio.getAction(this.frame));
-//                               new SpecialFieldAction(frame, Priority.getInstance(), strPrio, false, 
-//                                               Globals.lang("Set priority to").concat(" ").concat(strPrio), "Set priority %0 for %1 entries"));
               }
               
               for (SpecialFieldValue prio: Rank.getInstance().getValues()) {
                      actions.put(prio.getActionName(), prio.getAction(this.frame));
-//                   actions.put(prio.getActionName(),
-//                               new SpecialFieldAction(frame, Priority.getInstance(), strPrio, false, 
-//                                               Globals.lang("Set ranking to").concat(" ").concat(strPrio), "Set rank %0 for %1 entries"));
               }
               
               actions.put("togglePreview", new BaseAction() {
@@ -1599,7 +1593,6 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
         actions.put("autoSetPdf", new AutoSetExternalFileForEntries(this, "pdf"));
         actions.put("autoSetPs", new AutoSetExternalFileForEntries(this, "ps"));
         actions.put("autoSetFile", new SynchronizeFileField(this));
-        actions.put("upgradeLinks", new UpgradeExternalLinks(this));
 
         actions.put("back", new BaseAction() {
             public void action() throws Throwable {
@@ -2738,6 +2731,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
                 markBaseChanged();
                 frame.output(name);
             } catch (CannotUndoException ex) {
+                ex.printStackTrace();
                 frame.output(Globals.lang("Nothing to undo")+".");
             }
             // After everything, enable/disable the undo/redo actions
index 0f76c57..6710da0 100644 (file)
@@ -799,6 +799,42 @@ public class BibLatexEntryTypes {
        }
     };
 
+       /**
+     * This type is used for IEEEtran.bst to control various 
+     * be repeated or not. Not a very elegant solution, but it works...
+     */
+    public static final BibtexEntryType IEEETRANBSTCTL = new BibtexEntryType() {
+            public String getName()
+            {
+                return "IEEEtranBSTCTL";
+            }
+
+            public String[] getOptionalFields()
+            {
+                return new String[] {
+                "ctluse_article_number", "ctluse_paper", "ctluse_forced_etal",
+                "ctlmax_names_forced_etal", "ctlnames_show_etal", "ctluse_alt_spacing",
+                "ctlalt_stretch_factor", "ctldash_repeated_names", "ctlname_format_string",
+                "ctlname_latex_cmd", "ctlname_url_prefix"
+                };
+            }
+
+            public String[] getRequiredFields()
+            {
+                return null;
+            }
+
+            public String describeRequiredFields()
+            {
+                return "None";
+            }
+
+            public boolean hasAllRequiredFields(BibtexEntry entry, BibtexDatabase database)
+            {
+               return true;
+           }
+        };
+
     // Unsupported types and custom types left out
 
     /*public static final BibtexEntryType ARTICLE = new BibtexEntryType() {
index d257e07..f60c269 100644 (file)
@@ -790,6 +790,48 @@ public abstract class BibtexEntryType implements Comparable<BibtexEntryType>
             }
         };
 
+    /**
+     * This type is used for IEEEtran.bst to control various 
+     * be repeated or not. Not a very elegant solution, but it works...
+     */
+    public static final BibtexEntryType IEEETRANBSTCTL =
+        new BibtexEntryType()
+        {
+            public String getName()
+            {
+                return "IEEEtranBSTCTL";
+            }
+
+            public String[] getOptionalFields()
+            {
+                return new String[] {
+                "ctluse_article_number", "ctluse_paper", "ctluse_forced_etal",
+                "ctlmax_names_forced_etal", "ctlnames_show_etal", "ctluse_alt_spacing",
+                "ctlalt_stretch_factor", "ctldash_repeated_names", "ctlname_format_string",
+                "ctlname_latex_cmd", "ctlname_url_prefix"
+                };
+            }
+
+            public String[] getRequiredFields()
+            {
+                return null;
+            }
+
+            public String describeRequiredFields()
+            {
+                return "None";
+            }
+
+            public boolean hasAllRequiredFields(BibtexEntry entry, BibtexDatabase database)
+            {
+               return true;
+           }
+
+            public boolean isVisibleAtNewEntryDialog() {
+               return false;
+            }
+};
+
     /**
      * This type is provided as an emergency choice if the user makes
      * customization changes that remove the type of an entry.
@@ -863,6 +905,10 @@ public abstract class BibtexEntryType implements Comparable<BibtexEntryType>
            if (opt[i].equals(field)) return true;
        return false;
     }
+    
+    public boolean isVisibleAtNewEntryDialog() {
+       return true;
+    }
 
     public static TreeMap<String, BibtexEntryType> ALL_TYPES = new TreeMap<String, BibtexEntryType>();
     public static TreeMap<String, BibtexEntryType> STANDARD_TYPES = new TreeMap<String, BibtexEntryType>();
@@ -888,6 +934,7 @@ public abstract class BibtexEntryType implements Comparable<BibtexEntryType>
             ALL_TYPES.put("periodical", PERIODICAL);
             ALL_TYPES.put("misc", MISC);
             ALL_TYPES.put("other", OTHER);
+            ALL_TYPES.put("ieeetranbstctl", IEEETRANBSTCTL);
         }
         else {
             ALL_TYPES.put("article", BibLatexEntryTypes.ARTICLE);
@@ -919,6 +966,7 @@ public abstract class BibtexEntryType implements Comparable<BibtexEntryType>
            ALL_TYPES.put("phdthesis", BibLatexEntryTypes.PHDTHESIS);
            ALL_TYPES.put("techreport", BibLatexEntryTypes.TECHREPORT);
            ALL_TYPES.put("www", BibLatexEntryTypes.WWW);
+            ALL_TYPES.put("ieeetranbstctl", BibLatexEntryTypes.IEEETRANBSTCTL);
         }
 
         // We need a record of the standard types, in case the user wants
index e684bf0..81ea895 100644 (file)
@@ -26,7 +26,7 @@ import javax.swing.*;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 
-import com.jgoodies.forms.builder.ButtonBarBuilder2;
+import com.jgoodies.forms.builder.ButtonBarBuilder;
 
 public class ContentSelectorDialog2 extends JDialog {
 
@@ -474,7 +474,7 @@ public class ContentSelectorDialog2 extends JDialog {
        wordEditPan.add(wordEditField);
 
        // Add buttons:
-        ButtonBarBuilder2 bsb = new ButtonBarBuilder2(buttonPan);
+        ButtonBarBuilder bsb = new ButtonBarBuilder(buttonPan);
         bsb.addGlue();
         bsb.addButton(ok);
            bsb.addButton(apply);
index 1b2bba3..4fcb93a 100644 (file)
@@ -26,7 +26,7 @@ import java.awt.event.WindowEvent;
 
 import javax.swing.*;
 
-import com.jgoodies.forms.builder.ButtonBarBuilder2;
+import com.jgoodies.forms.builder.ButtonBarBuilder;
 
 public class EntryTypeDialog extends JDialog implements ActionListener {
 
@@ -79,7 +79,7 @@ public class EntryTypeDialog extends JDialog implements ActionListener {
        cancel.getActionMap().put("close", cancelAction);
 
        //buttons.add(ok);
-    ButtonBarBuilder2 bb = new ButtonBarBuilder2(buttons);
+    ButtonBarBuilder bb = new ButtonBarBuilder(buttons);
     //buttons.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
     bb.addGlue();
     bb.addButton(cancel);
@@ -94,18 +94,21 @@ public class EntryTypeDialog extends JDialog implements ActionListener {
        con.insets = new Insets(4, 4, 4, 4);
        int col = 0;
 
-       for (BibtexEntryType tp : BibtexEntryType.ALL_TYPES.values()){
-        TypeButton b = new TypeButton(Util.nCase(tp.getName()), tp);
-           b.addActionListener(this);
-           // Check if we should finish the row.
-           col++;
-           if (col == COLNUM) {
-               col = 0;
-               con.gridwidth = GridBagConstraints.REMAINDER;
-           } else
-               con.gridwidth = 1;
-           gbl.setConstraints(b, con);
-           pan.add(b);
+       for (BibtexEntryType tp : BibtexEntryType.ALL_TYPES.values()) {
+               if (tp.isVisibleAtNewEntryDialog()) {
+                       TypeButton b = new TypeButton(Util.nCase(tp.getName()), tp);
+                       b.addActionListener(this);
+                       // Check if we should finish the row.
+                       col++;
+                       if (col == COLNUM) {
+                               col = 0;
+                               con.gridwidth = GridBagConstraints.REMAINDER;
+                       } else {
+                               con.gridwidth = 1;
+                       }
+                       gbl.setConstraints(b, con);
+                       pan.add(b);
+               }
        }
        pan.setBorder(BorderFactory.createTitledBorder
                      (BorderFactory.createEtchedBorder(),
index 5f1c709..b6b05c3 100644 (file)
@@ -15,7 +15,7 @@
 */
 package net.sf.jabref;
 
-import java.awt.BorderLayout;
+import java.awt.*;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.awt.event.ActionListener;
@@ -174,15 +174,19 @@ public class ExternalTab extends JPanel implements PrefsTab {
                builder.appendSeparator(Globals.lang("External programs"));
 
                builder.nextLine();
-               
-        addSettingsButton(new PushToLyx(), builder);
-        addSettingsButton(new PushToEmacs(), builder);
-        addSettingsButton(new PushToWinEdt(), builder);
-        addSettingsButton(new PushToVim(), builder);
-        addSettingsButton(new PushToLatexEditor(), builder);
-        addSettingsButton(new PushToTeXstudio(), builder);
-
-        //builder.nextLine();
+
+        JPanel butpan = new JPanel();
+        butpan.setLayout(new GridLayout(2,3));
+        addSettingsButton(new PushToLyx(), butpan);
+        addSettingsButton(new PushToEmacs(), butpan);
+        addSettingsButton(new PushToWinEdt(), butpan);
+        addSettingsButton(new PushToVim(), butpan);
+        addSettingsButton(new PushToLatexEditor(), butpan);
+        addSettingsButton(new PushToTeXstudio(), butpan);
+        builder.append(new JPanel());
+        builder.append(butpan, 3);
+
+        builder.nextLine();
         builder.append(pan);
         builder.append(editFileTypes);
         
@@ -192,18 +196,25 @@ public class ExternalTab extends JPanel implements PrefsTab {
 
     }
 
-    private void addSettingsButton(final PushToApplication pt, DefaultFormBuilder b) {
-        b.append(new JPanel());
-        b.append(Globals.lang("Settings for %0", pt.getName())+":");
-        JButton button = new JButton(pt.getIcon());
+    private void addSettingsButton(final PushToApplication pt, JPanel p) {
+        //if (b.getColumn() < 2)
+        //    b.append(new JPanel());
+        //JPanel pan = new JPanel();
+        //pan.setLayout(new BorderLayout());
+        //pan.add(new JLabel(Globals.lang("Settings for %0", pt.getApplicationName())), BorderLayout.CENTER);
+        JButton button = new JButton(Globals.lang("Settings for %0", pt.getApplicationName()),
+                pt.getIcon());
         button.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent event) {
                 PushToApplicationButton.showSettingsDialog(_frame, pt, pt.getSettingsPanel());
             }
         });
-
-        b.append(button);
-        b.nextLine();
+        p.add(button);//, BorderLayout.CENTER);
+        //b.append(button);
+        //b.nextLine();
+        //b.append(pan);
+        //if (b.getColumn() >= 6)
+        //    b.nextLine();
     }
 
        public void setValues() {
index 0aded7a..9e518cf 100644 (file)
@@ -23,12 +23,7 @@ import java.awt.event.WindowEvent;
 import java.io.File;
 import java.io.FileFilter;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.TreeMap;
-import java.util.Vector;
+import java.util.*;
 
 import javax.swing.AbstractAction;
 import javax.swing.Action;
@@ -60,12 +55,13 @@ import javax.swing.tree.TreeModel;
 import javax.swing.tree.TreeNode;
 import javax.swing.tree.TreePath;
 
-import com.jgoodies.forms.builder.ButtonBarBuilder2;
+import com.jgoodies.forms.builder.ButtonBarBuilder;
 
 import net.sf.jabref.imports.EntryFromFileCreator;
 import net.sf.jabref.imports.EntryFromFileCreatorManager;
 import net.sf.jabref.imports.UnlinkedFilesCrawler;
 import net.sf.jabref.imports.UnlinkedPDFFileFilter;
+import net.sf.jabref.undo.CountingUndoManager;
 
 /**
  * GUI Dialog for the feature "Find unlinked files".
@@ -109,8 +105,8 @@ public class FindUnlinkedFilesDialog extends JDialog {
 
        protected JButton buttonBrowse;
        protected JButton buttonScan;
-       protected JButton buttonOk;
-       protected JButton buttonCancel;
+       protected JButton buttonApply;
+       protected JButton buttonClose;
 
        /* Options for the TreeView */
        protected JButton buttonOptionSelectAll;
@@ -171,6 +167,7 @@ public class FindUnlinkedFilesDialog extends JDialog {
                lastSelectedDirectory = loadLastSelectedDirectory();
                
                initialize();
+        buttonApply.setEnabled(false);
        }
        
        /**
@@ -528,8 +525,8 @@ public class FindUnlinkedFilesDialog extends JDialog {
 
                progressBarImporting.setVisible(true);
                labelImportingInfo.setVisible(true);
-               buttonOk.setVisible(false);
-               buttonCancel.setVisible(false);
+               buttonApply.setVisible(false);
+               buttonClose.setVisible(false);
                disOrEnableDialog(false);
                
                labelImportingInfo.setEnabled(true);
@@ -545,14 +542,17 @@ public class FindUnlinkedFilesDialog extends JDialog {
                threadState = new int[] {1};
                new Thread(new Runnable() {
                        public void run() {
-                               List<String> errors = creatorManager.addEntrysFromFiles(fileList, database, entryType, checkBoxWhyIsThereNoGetSelectedStupidSwing,  new ChangeListener() {
+                List<String> errors = new LinkedList<String>();
+                int count = creatorManager.addEntrysFromFiles(fileList, database, frame.basePanel(),
+                        entryType,
+                        checkBoxWhyIsThereNoGetSelectedStupidSwing,  new ChangeListener() {
                                        int counter = 0;
                                        public void stateChanged(ChangeEvent e) {
                                                progressBarImporting.setValue(++counter);
                                                progressBarImporting.setString(counter + " of " + progressBarImporting.getMaximum());
                                        }
-                               });
-                               importFinishedHandler(errors);
+                               }, errors);
+                               importFinishedHandler(count, errors);
                        }
                }).start();
                
@@ -562,7 +562,7 @@ public class FindUnlinkedFilesDialog extends JDialog {
         * 
         * @param errors
         */
-       protected void importFinishedHandler(List<String> errors) {
+       protected void importFinishedHandler(int count, List<String> errors) {
                
                if (errors != null && errors.size() > 0) {
                        
@@ -582,11 +582,11 @@ public class FindUnlinkedFilesDialog extends JDialog {
                
                progressBarImporting.setVisible(false);
                labelImportingInfo.setVisible(false);
-               buttonOk.setVisible(true);
-               buttonCancel.setVisible(true);
-               
+               buttonApply.setVisible(true);
+               buttonClose.setVisible(true);
                disOrEnableDialog(true);
-               setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+        frame.basePanel().markBaseChanged();
        }
        
        /**
@@ -609,10 +609,10 @@ public class FindUnlinkedFilesDialog extends JDialog {
                progressBarSearching.setVisible(false);
                labelSearchingDirectoryInfo.setVisible(false);
                buttonScan.setVisible(true);
-               
                actionSelectAll.actionPerformed(null);
                
                disOrEnableDialog(true);
+        buttonApply.setEnabled(true);
        }
 
        /**
@@ -648,13 +648,13 @@ public class FindUnlinkedFilesDialog extends JDialog {
                        }
                };
                
-               buttonOk.addActionListener(actionListenerImportEntrys);
+               buttonApply.addActionListener(actionListenerImportEntrys);
                
-               buttonCancel.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e) {
-                               dispose();
-                       }
-               });
+               buttonClose.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                dispose();
+            }
+        });
        }
 
        /**
@@ -737,15 +737,14 @@ public class FindUnlinkedFilesDialog extends JDialog {
                buttonScan = new JButton(Globals.lang("Scan directory"));
                buttonScan.setMnemonic('S');
                buttonScan.setToolTipText(Globals.lang("Searches the selected directory for unlinked files."));
-               buttonOk = new JButton(Globals.lang("Ok"));
-               buttonOk.setMnemonic('I');
-               buttonOk.setToolTipText(Globals.lang("Starts the import of bibtex entries."));
-               buttonCancel = new JButton(Globals.lang("Cancel"));
-               buttonCancel.setToolTipText(Globals.lang("Leave this dialog."));
-               buttonCancel.setMnemonic('C');
+               buttonApply = new JButton(Globals.lang("Apply"));
+               buttonApply.setMnemonic('I');
+               buttonApply.setToolTipText(Globals.lang("Starts the import of bibtex entries."));
+               buttonClose = new JButton(Globals.lang("Close"));
+               buttonClose.setToolTipText(Globals.lang("Leave this dialog."));
+               buttonClose.setMnemonic('C');
 
                
-               
                /* Options for the TreeView */
                buttonOptionSelectAll = new JButton();
                buttonOptionSelectAll.setMnemonic('A');
@@ -873,10 +872,10 @@ public class FindUnlinkedFilesDialog extends JDialog {
                addComponent(gbl, getContentPane(), panelButtons, GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER, new Insets(10, 6, 10, 6),
                                0, 3, 1, 1, 0, 0, 0, 0);
                
-           ButtonBarBuilder2 bb = new ButtonBarBuilder2();
+           ButtonBarBuilder bb = new ButtonBarBuilder();
         bb.addGlue();
-        bb.addButton(buttonOk);
-        bb.addButton(buttonCancel);
+        bb.addButton(buttonApply);
+        bb.addButton(buttonClose);
         bb.addGlue();
 
         bb.getPanel().setBorder(BorderFactory.createEmptyBorder(5,5,5,5));        
index 0c4517e..f40c306 100644 (file)
@@ -49,15 +49,7 @@ public class GUIGlobals {
        helpTitle = "JabRef help",
        TYPE_HEADER = "entrytype",
        NUMBER_COL = "#",
-       encPrefix = "Encoding: ", // Part of the signature in written bib files.
-       linuxDefaultLookAndFeel = "com.jgoodies.looks.plastic.Plastic3DLookAndFeel",
-
-    //linuxDefaultLookAndFeel = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel",
-    //linuxDefaultLookAndFeel = "org.jvnet.substance.skin.SubstanceCremeCoffeeLookAndFeel",
-    //linuxDefaultLookAndFeel = "org.jvnet.substance.skin.SubstanceNebulaLookAndFeel",
-    //linuxDefaultLookAndFeel = "org.jvnet.substance.skin.SubstanceBusinessLookAndFeel",
-    windowsDefaultLookAndFeel = "com.jgoodies.looks.windows.WindowsLookAndFeel";
-    //windowsDefaultLookAndFeel = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
+       encPrefix = "Encoding: "; // Part of the signature in written bib files.
 
        public static Font CURRENTFONT,
        typeNameFont,
index 0c1cc0f..c2c8edf 100644 (file)
@@ -226,8 +226,8 @@ public class GeneralTab extends JPanel implements PrefsTab {
         _prefs.putBoolean("dialogWarningForEmptyKey", keyEmptyWarningDialog.isSelected());
         _prefs.putBoolean("enforceLegalBibtexKey", enforceLegalKeys.isSelected());
         if (_prefs.getBoolean("memoryStickMode") && !memoryStick.isSelected()){
-            JOptionPane.showMessageDialog(null, Globals.lang("To disable the memory stick mode" +
-                       " rename or remove the jabref.xml file in the same folder as JabRef."),
+            JOptionPane.showMessageDialog(null, Globals.lang("To disable the memory stick mode"
+                       " rename or remove the jabref.xml file in the same folder as JabRef."),
                        Globals.lang("Memory Stick Mode"),
                        JOptionPane.INFORMATION_MESSAGE);
         }
index 320fb93..583e38d 100644 (file)
@@ -28,9 +28,12 @@ import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 import java.util.logging.ConsoleHandler;
 import java.util.logging.Filter;
+import java.util.logging.Formatter;
 import java.util.logging.Handler;
 import java.util.logging.LogRecord;
 import java.util.logging.Logger;
+import java.util.logging.SimpleFormatter;
+import java.util.logging.StreamHandler;
 import java.util.regex.Pattern;
 
 import net.sf.jabref.collab.FileUpdateMonitor;
@@ -190,9 +193,7 @@ public class Globals {
     public static final int NEWLINE_LENGTH = System.getProperty("line.separator").length();
 
     // Instantiate logger:
-    // TODO: Doesn't work in Java 5:
-    // private static Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
-    private static Logger logger = Logger.getLogger("global");
+    private static Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
 
     /**
         * true if we have unix newlines
@@ -1393,4 +1394,44 @@ public class Globals {
                return pattern;
        }
 
+       /**
+        * With Java 7, one could directly set a format for the SimpleFormatter
+        * (http://stackoverflow.com/a/10722260/873282) and use that in a StreamHandler.
+        * As JabRef is compatible with Java6, we have to write our own Handler
+        */
+       private static class StdoutConsoleHandler extends Handler {
+
+               @Override
+        public void close() throws SecurityException {
+        }
+
+               @Override
+        public void flush() {
+                       System.out.flush();
+        }
+
+               @Override
+        public void publish(LogRecord record) {
+               System.out.println(record.getMessage());
+               System.out.flush();
+        }
+       }
+
+       public static void setupLogging() {
+               // get the root logger. It is NOT GLOBAL_LOGGER_NAME
+           Logger rootLogger = Logger.getLogger("");
+           
+           // disable console logging by removing all handlers
+           Handler[] handlers = rootLogger.getHandlers();
+           for(Handler handler : handlers) {
+               rootLogger.removeHandler(handler);
+           }
+
+           // add new handler logging to System.out
+               StdoutConsoleHandler h = new StdoutConsoleHandler();
+               rootLogger.addHandler(h);
+
+               rootLogger.addHandler(errorConsole);
+    }
+
 }
index 0af1817..ae57a65 100644 (file)
 */
 package net.sf.jabref;
 
-import com.jgoodies.looks.FontPolicies;
-import com.jgoodies.looks.FontPolicy;
-import com.jgoodies.looks.FontSet;
-import com.jgoodies.looks.FontSets;
 import com.jgoodies.looks.plastic.Plastic3DLookAndFeel;
-import com.jgoodies.looks.windows.WindowsLookAndFeel;
+import com.jgoodies.looks.plastic.theme.SkyBluer;
 import gnu.dtools.ritopt.BooleanOption;
 import gnu.dtools.ritopt.Options;
 import gnu.dtools.ritopt.StringOption;
-import net.sf.jabref.export.*;
-import net.sf.jabref.imports.*;
+
+import java.awt.Font;
+import java.awt.Frame;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+import java.util.prefs.BackingStoreException;
+
+import javax.swing.*;
+
+import net.sf.jabref.export.AutoSaveManager;
+import net.sf.jabref.export.ExportFormats;
+import net.sf.jabref.export.FileActions;
+import net.sf.jabref.export.IExportFormat;
+import net.sf.jabref.export.SaveException;
+import net.sf.jabref.export.SaveSession;
+import net.sf.jabref.imports.AutosaveStartupPrompter;
+import net.sf.jabref.imports.EntryFetcher;
+import net.sf.jabref.imports.ImportInspectionCommandLine;
+import net.sf.jabref.imports.OpenDatabaseAction;
+import net.sf.jabref.imports.ParserResult;
 import net.sf.jabref.plugin.PluginCore;
-import net.sf.jabref.plugin.SidePanePlugin;
 import net.sf.jabref.plugin.PluginInstaller;
+import net.sf.jabref.plugin.SidePanePlugin;
 import net.sf.jabref.plugin.core.JabRefPlugin;
 import net.sf.jabref.plugin.core.generated._JabRefPlugin;
 import net.sf.jabref.plugin.core.generated._JabRefPlugin.EntryFetcherExtension;
@@ -36,19 +56,6 @@ import net.sf.jabref.remote.RemoteListener;
 import net.sf.jabref.util.Pair;
 import net.sf.jabref.wizard.auximport.AuxCommandLine;
 
-import javax.swing.*;
-import javax.swing.plaf.metal.MetalLookAndFeel;
-import java.awt.*;
-import java.awt.event.KeyEvent;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.*;
-import java.util.List;
-import java.util.prefs.BackingStoreException;
-
-import spin.Spin;
-
 /**
  * JabRef Main Class - The application gets started here.
  *
@@ -94,6 +101,7 @@ public class JabRef {
         }
 
         Globals.startBackgroundTasks();
+        Globals.setupLogging();
                Globals.prefs = prefs;
         String langStr = prefs.get("language");
         String[] parts = langStr.split("_");
@@ -623,6 +631,29 @@ public class JabRef {
 
         return new ParserResult(result);
     }
+    
+    private void setLookAndFeel() {
+        // * Look first into the Preferences
+        // * Fallback to the System Look & Fell
+        try {
+            String systemLnF = UIManager.getSystemLookAndFeelClassName();
+            if (!Globals.prefs.getBoolean("useDefaultLookAndFeel"))
+                systemLnF = Globals.prefs.get("lookAndFeel");
+
+            // At all cost, avoid ending up with the Metal look and feel:
+            if (systemLnF.equals("javax.swing.plaf.metal.MetalLookAndFeel")) {
+                Plastic3DLookAndFeel lnf = new Plastic3DLookAndFeel();
+                Plastic3DLookAndFeel.setCurrentTheme(new SkyBluer());
+                com.jgoodies.looks.Options.setPopupDropShadowEnabled(true);
+                UIManager.setLookAndFeel(lnf);
+            }
+            else {
+                UIManager.setLookAndFeel(systemLnF);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 
        public void openWindow(Vector<ParserResult> loaded) {
         if (!graphicFailure && !disableGui.isInvoked()) {
@@ -646,135 +677,13 @@ public class JabRef {
             // Set antialiasing on everywhere. This only works in JRE >= 1.5.
             // Or... it doesn't work, period.
             //System.setProperty("swing.aatext", "true");
-            // If we are not on Mac, deal with font sizes and LookAndFeels:
-            if (!Globals.ON_MAC) {
-                int fontSizes = Globals.prefs.getInt("menuFontSize");
-                boolean overrideDefaultFonts = Globals.prefs.getBoolean("overrideDefaultFonts");
-                String defaultLookAndFeel;
-
-                if (Globals.ON_WIN)
-                    defaultLookAndFeel = GUIGlobals.windowsDefaultLookAndFeel;
-                else
-                    defaultLookAndFeel = GUIGlobals.linuxDefaultLookAndFeel;
-
-                String lookAndFeel = null;
-
-                if (!Globals.prefs.getBoolean("useDefaultLookAndFeel"))
-                    lookAndFeel = Globals.prefs.get("lookAndFeel");
-                else
-                    lookAndFeel = defaultLookAndFeel;
-
-                LookAndFeel lnf = null;
-                Object objLnf = null;
-
-
-                try {
-                    if (lookAndFeel != null)
-                        objLnf = Class.forName(lookAndFeel).newInstance();
-                    else
-                        objLnf = Class.forName(defaultLookAndFeel).newInstance();
-                } catch (Exception ex) {
-                    ex.printStackTrace();
-                    if (splashScreen != null) {// do this only if splashscreen was actually created
-                        splashScreen.dispose();
-                        splashScreen = null;
-                    }
-                    JOptionPane.showMessageDialog(null, Globals.lang("Error setting look and feel")+
-                        ": "+lookAndFeel);
-                    try {
-                        objLnf = Class.forName(defaultLookAndFeel).newInstance();
-                    } catch (Exception ex2) {
-                    }
-                }
-
-                if (objLnf != null)
-                    lnf = (LookAndFeel) objLnf;
-
-                // Set font sizes if we are using a JGoodies look and feel.
-                if ((lnf != null) && (lnf instanceof Plastic3DLookAndFeel)) {
-
-                    //UIManager.put("jgoodies.popupDropShadowEnabled", Boolean.TRUE);
-                    MetalLookAndFeel.setCurrentTheme(new
-                     com.jgoodies.looks.plastic.theme.SkyBluer());
-
-                    // Set a "model" icon size, so menu items are evenly spaced even though
-                    // only some items have icons. We load an arbitrary icon and look at
-                    // its size to determine what size to use:
-                    int defaultIconSize = GUIGlobals.getImage("open").getIconWidth();
-                    com.jgoodies.looks.Options.setDefaultIconSize
-                            (new Dimension(defaultIconSize, defaultIconSize));
-
-
-                    if (overrideDefaultFonts) {
-                        FontSet fontSet = FontSets.createDefaultFontSet(
-                            new Font("Tahoma", Font.PLAIN, fontSizes),    // control font
-                            new Font("Tahoma", Font.PLAIN, fontSizes),    // menu font
-                            new Font("Tahoma", Font.BOLD, fontSizes)     // title font
-                            );
-                        FontPolicy fixedPolicy = FontPolicies.createFixedPolicy(fontSet);
-                        Plastic3DLookAndFeel.setFontPolicy(fixedPolicy);
-                    }
-
-                    //Plastic3DLookAndFeel plLnf = (Plastic3DLookAndFeel) lnf;
-                }
-                else if ((lnf != null) && (lnf instanceof WindowsLookAndFeel)) {
-
-                    // Set a "model" icon size, so menu items are evenly spaced even though
-                    // only some items have icons. We load an arbitrary icon and look at
-                    // its size to determine what size to use:
-                    int defaultIconSize = GUIGlobals.getImage("open").getIconWidth();
-                    com.jgoodies.looks.Options.setDefaultIconSize
-                        (new Dimension(defaultIconSize, defaultIconSize));
-
-                    if (overrideDefaultFonts) {
-                        FontSet fontSet = FontSets.createDefaultFontSet(
-                            new Font("Tahoma", Font.PLAIN, fontSizes),    // control font
-                            new Font("Tahoma", Font.PLAIN, fontSizes),    // menu font
-                            new Font("Tahoma", Font.BOLD, fontSizes)     // title font
-                            );
-                        FontPolicy fixedPolicy = FontPolicies.createFixedPolicy(fontSet);
-                        WindowsLookAndFeel.setFontPolicy(fixedPolicy);
-                    }
-
-                    //WindowsLookAndFeel plLnf = (WindowsLookAndFeel) lnf;
-                }
-
-                if (lnf != null) {
-                    try {
-
-                        UIManager.setLookAndFeel(lnf);
-
-                        if (!Globals.ON_WIN) {
-                            UIManager.put("SimpleInternalFrame.activeTitleBackground", GUIGlobals.gradientBlue);
-                        }
-
-                        if (!Globals.ON_WIN && !Globals.ON_MAC) {
-                            // For Linux, add Enter as button click key:
-                            UIDefaults def = UIManager.getDefaults();
-                            InputMap im = (InputMap)def.get("Button.focusInputMap");
-                            im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), "pressed");
-                            im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, true), "released");
-                        }
-                    } catch (Throwable ex) {
-                        ex.printStackTrace();
-                        System.err.println("Trying to set system default Look&Feel...");
-
-                        // if desired lnf could not be set, try system default
-                        try {
-                            UIManager.setLookAndFeel(UIManager
-                                .getSystemLookAndFeelClassName());
-                        } catch (Throwable e) {
-                            e.printStackTrace();
-                        }
-                    }
-
-                    //LookAndFeel lnf = new com.sun.java.swing.plaf.gtk.GTKLookAndFeel();
-                    //Look1AndFeel lnf = new
-                    // com.incors.plaf.kunststoff.KunststoffLookAndFeel();
-                    //com.incors.plaf.kunststoff.KunststoffLookAndFeel.setCurrentTheme(new
-                    // com.incors.plaf.kunststoff.themes.KunststoffDesktopTheme());
-                }
+            // TODO test and maybe remove this! I found this commented out with no additional info ( payload@lavabit.com )
 
+            // Set the Look & Feel for Swing.
+            try {
+                setLookAndFeel();
+            } catch (Throwable e) {
+                e.printStackTrace();
             }
 
 
index 80a3cfa..a5d86f1 100644 (file)
@@ -1,4 +1,4 @@
-/*  Copyright (C) 2003-2011 JabRef contributors.
+/*  Copyright (C) 2003-2012 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
@@ -40,6 +40,8 @@ import javax.swing.*;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
+import org.java.ayatana.ApplicationMenu;
+
 import net.sf.jabref.export.*;
 import net.sf.jabref.external.ExternalFileTypeEditor;
 import net.sf.jabref.external.PushToApplicationButton;
@@ -335,9 +337,7 @@ public class JabRefFrame extends JFrame implements OutputPrinter {
     manageJournals = new ManageJournalsAction(this),
     databaseProperties = new DatabasePropertiesAction(),
     bibtexKeyPattern = new BibtexKeyPatternAction(),
-    upgradeExternalLinks = new GeneralAction("upgradeLinks", "Upgrade external links",
-            Globals.lang("Upgrade external PDF/PS links to use the '%0' field.", GUIGlobals.FILE_FIELD)),
-      errorConsole = Globals.errorConsole.getAction(this),
+    errorConsole = Globals.errorConsole.getAction(this),
     test = new GeneralAction("test", "Test"),
 
     dbConnect = new GeneralAction("dbConnect", "Connect to external SQL database",
@@ -550,6 +550,13 @@ public class JabRefFrame extends JFrame implements OutputPrinter {
                 }
             }
         });
+
+        // The following sets up integration with Unity's global menu, but currently (Nov 18, 2012)
+        // this doesn't work with OpenJDK 6 (leads to crash), only with 7.
+        String javaVersion = System.getProperty("java.version", null);
+        if (javaVersion.compareTo("1.7") >= 0)
+            ApplicationMenu.tryInstall(this);
+
     }
 
     public void setWindowTitle() {
@@ -924,6 +931,7 @@ public JabRefPreferences prefs() {
     status.add(statusLine);
     con.weightx = 0;
     con.gridwidth = GridBagConstraints.REMAINDER;
+    con.insets = new Insets(2, 4, 2, 2);
     gbl.setConstraints(progressBar, con);
     status.add(progressBar);
     con.weightx = 1;
@@ -1378,8 +1386,6 @@ public JabRefPreferences prefs() {
       checkAndFix.add(autoSetPdf);
       checkAndFix.add(autoSetPs);
       checkAndFix.add(integrityCheckAction);
-      //checkAndFix.addSeparator();
-      checkAndFix.add(upgradeExternalLinks);
       tools.add(checkAndFix);
 
       mb.add(tools);
@@ -1428,11 +1434,10 @@ public JabRefPreferences prefs() {
       helpMenu.add(help);
       helpMenu.add(contents);
       helpMenu.addSeparator();
-//old about    helpMenu.add(about);
+      helpMenu.add(errorConsole);
+      helpMenu.addSeparator();
       helpMenu.add(about);
       mb.add(helpMenu);
-      helpMenu.addSeparator();
-      helpMenu.add(errorConsole);
   }
 
     public static JMenu subMenu(String name) {
@@ -1571,7 +1576,6 @@ public JabRefPreferences prefs() {
   
 
  public void output(final String s) {
-
       SwingUtilities.invokeLater(new Runnable() {
           public void run() {
               statusLine.setText(s);
@@ -2463,7 +2467,7 @@ class SaveSessionAction
     class BibtexKeyPatternAction extends MnemonicAwareAction {
         BibtexKeyPatternDialog bibtexKeyPatternDialog = null;
         public BibtexKeyPatternAction() {
-            putValue(NAME, "Bibtexkey patterns");
+            putValue(NAME, "Bibtex key patterns");
         }
 
         public void actionPerformed(ActionEvent e) {
index e049f52..4cca8f0 100644 (file)
@@ -55,10 +55,10 @@ public class JabRefMain {
 \r
         String javaVersion = System.getProperty("java.version", null);\r
 \r
-        if (javaVersion.compareTo("1.5") < 0) {\r
+        if (javaVersion.compareTo("1.6") < 0) {\r
             String javaVersionWarning = "\n" + \r
-                "WARNING: You are running Java version 1.4 or lower (" + javaVersion + " to be exact).\n" +\r
-                "         JabRef needs at least a Java Runtime Environment 1.5 or higher.\n" +\r
+                "WARNING: You are running Java version 1.6 or lower (" + javaVersion + " to be exact).\n" +\r
+                "         JabRef needs at least a Java Runtime Environment 1.6 or higher.\n" +\r
                 "         JabRef should not start properly and output an error message\n" +\r
                 "         (probably java.lang.UnsupportedClassVersionError ... (Unsupported major.minor version 49.0)\n" +\r
                 "         See http://jabref.sf.net/faq.php for more information.\n";\r
@@ -162,12 +162,12 @@ public class JabRefMain {
             String errorMessage = \r
                 exceptionToString(e) + "\n" +\r
                 "This means that your Java version (" + javaVersion + ") is not high enough to run JabRef.\n" +\r
-                               "Please update your Java Runtime Environment to a version 1.5 or higher.\n";\r
+                               "Please update your Java Runtime Environment to a version 1.6 or higher.\n";\r
             \r
             System.out.println(errorMessage);\r
             \r
             JEditorPane pane = new JEditorPane("text/html", \r
-                "<html>You are using Java version " + javaVersion + ", but JabRef needs version 1.5 or higher." +\r
+                "<html>You are using Java version " + javaVersion + ", but JabRef needs version 1.6 or higher." +\r
                 "<p>Please update your Java Runtime Environment.</p>" +\r
                 "<p>For more information visit <b>http://jabref.sf.net/faq.php</b>.</p></html>");\r
             pane.setEditable(false);\r
index 81b8dc6..6c4aebc 100644 (file)
@@ -494,6 +494,8 @@ public class JabRefPreferences {
         defaults.put(REG_EXP_SEARCH_EXPRESSION_KEY, defaultExpression);
         defaults.put(USE_REG_EXP_SEARCH_KEY, Boolean.FALSE);
         defaults.put("useIEEEAbrv", Boolean.TRUE);
+        defaults.put("useConvertToEquation", Boolean.FALSE);
+        defaults.put("useCaseKeeperOnSearch", Boolean.TRUE);
 
        defaults.put("userFileDir", GUIGlobals.FILE_FIELD + "Directory");
        try {
@@ -1134,6 +1136,7 @@ public class JabRefPreferences {
         list.add(new ExternalFileType("CHM", "chm", "application/mshelp", "gnochm", "www"));
         list.add(new ExternalFileType("TIFF image", "tiff", "image/tiff", "gimp", "picture"));
         list.add(new ExternalFileType("URL", "html", "text/html", "firefox", "www"));
+        list.add(new ExternalFileType("MHT", "mht", "multipart/related", "firefox", "www"));
         list.add(new ExternalFileType("ePUB", "epub", "application/epub+zip", "firefox", "www"));
 
         // On all OSes there is a generic application available to handle file opening,
index b76c5a9..5c5c14c 100644 (file)
@@ -34,7 +34,7 @@ import net.sf.jabref.groups.GroupsPrefsTab;
 import net.sf.jabref.gui.MainTable;
 import net.sf.jabref.gui.FileDialogs;
 
-import com.jgoodies.forms.builder.ButtonBarBuilder2;
+import com.jgoodies.forms.builder.ButtonBarBuilder;
 
 /**
  * Preferences dialog. Contains a TabbedPane, and tabs will be defined in
@@ -137,7 +137,7 @@ public class PrefsDialog3 extends JDialog {
                CancelAction cancelAction = new CancelAction();
                cancel.addActionListener(cancelAction);
                lower.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
-               ButtonBarBuilder2 bb = new ButtonBarBuilder2(lower);
+               ButtonBarBuilder bb = new ButtonBarBuilder(lower);
                bb.addGlue();
         bb.addButton(ok);
         bb.addButton(cancel);
index 0b71a5b..b9381ff 100644 (file)
@@ -244,14 +244,10 @@ public class SearchManager2 extends SidePaneComponent
 
     JPanel main = new JPanel();
     main.setLayout(gbl);
-    //SidePaneHeader header = new SidePaneHeader("Search", GUIGlobals.searchIconFile, this);
     con.gridwidth = GridBagConstraints.REMAINDER;
     con.fill = GridBagConstraints.BOTH;
         con.weightx = 1;
-    //con.insets = new Insets(0, 0, 2,  0);
-    //gbl.setConstraints(header, con);
-    //add(header);
-        //con.insets = new Insets(0, 0, 0,  0);
+
         gbl.setConstraints(searchField,con);
         main.add(searchField) ;
         //con.gridwidth = 1;
index 0111892..3d0053a 100644 (file)
@@ -45,6 +45,7 @@ public abstract class SidePaneComponent extends SimpleInternalFrame {
                close.setMargin(new Insets(0, 0, 0, 0));
                // tlb.setOpaque(false);
                close.setBorder(null);
+        tlb.setFloatable(false);
                tlb.add(close);
                close.addActionListener(new CloseButtonListener());
                setToolBar(tlb);
diff --git a/src/java/net/sf/jabref/SidePaneHeader.java b/src/java/net/sf/jabref/SidePaneHeader.java
deleted file mode 100644 (file)
index be9819d..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/*  Copyright (C) 2003-2011 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;
-
-import javax.swing.*;
-import java.awt.*;
-import java.awt.event.ActionListener;
-import java.awt.event.ActionEvent;
-import java.net.URL;
-
-public class SidePaneHeader extends JPanel implements ActionListener {
-
-  private JButton close = new JButton(GUIGlobals.getImage("close2"));
-    private JLabel nameLabel;
-    private SidePaneComponent parent;
-    private GridBagLayout gbl = new GridBagLayout();
-    private GridBagConstraints con = new GridBagConstraints();
-
-    /*
-    public SidePaneHeader(String name, URL image, JButton button,
-                         JComponent parent_) {
-
-                         }*/
-
-    public SidePaneHeader(String name, URL image, SidePaneComponent parent_) {
-    addPart(name, image, parent_);
-    }
-
-    public void paintComponent(Graphics g) {
-      Graphics2D g2 = (Graphics2D)g;
-      Paint oldPaint = g2.getPaint();
-      //g2.putColor(Color.red);
-      Insets ins = getInsets();
-      int width = getWidth() - ins.left - ins.right,
-          height = getHeight() - ins.top - ins.bottom;
-      //g2.setPaint(new GradientPaint(0, 0, GUIGlobals.gradientGray,
-     //                              width, height, GUIGlobals.gradientBlue, false));
-     g2.setPaint(new GradientPaint(ins.left, ins.top, GUIGlobals.gradientGray,
-                                   width, height, GUIGlobals.gradientBlue, false));
-      g2.fillRect(ins.left, ins.top, width-1, height);
-      //g2.fillRect(0, 0, 100, 10);
-      g2.setPaint(oldPaint);
-      //super.paintComponent(g);
-    }
-
-    //public boolean isOpaque() { return true; }
-
-    private void addPart(String name, URL image, SidePaneComponent parent_) {
-    parent = parent_;
-    setLayout(gbl);
-        //setPreferredSize(new Dimension(GUIGlobals.SPLIT_PANE_DIVIDER_LOCATION, 18));
-        //setMinimumSize(new Dimension(GUIGlobals.SPLIT_PANE_DIVIDER_LOCATION, 18));
-    //imageIcon = new JLabel(new ImageIcon(image));
-    nameLabel = new JLabel(Globals.lang(name), new ImageIcon(image),
-                   SwingConstants.LEFT);
-//        setBackground(new Color(0, 0, 175)); //SystemColor.activeCaption);
-
-        //close.setOpaque(false);
-        nameLabel.setForeground(new Color(230, 230, 230));
-    //nameLabel.setPreferredSize(new Dimension(70, 24));
-        /*AbstractAction close = new AbstractAction("Close", new ImageIcon(GUIGlobals.closeIconFile)) {
-          public void actionPerformed(ActionEvent e) {
-            parent.hideAway();
-          }
-        };
-       close.putValue(close.SHORT_DESCRIPTION, "Close");
-        JToolBar tlb = new JToolBar();
-        tlb.setFloatable(false);
-        tlb.setMargin(new Insets(0,0,0,0));
-        tlb.setSize(20, 20);
-        tlb.add(close);*/
-  //close.setMargin(new Insets(0,0,0,0));
-  //close.setRolloverEnabled(true);
-  close.setBorder(null);
-  close.setOpaque(false);
-  close.setPreferredSize(new Dimension(15, 15));
-  close.setMaximumSize(new Dimension(15, 15));
-  close.setMinimumSize(new Dimension(15, 15));
-  close.addActionListener(this);
-
-  //setBorder(BorderFactory.createEtchedBorder());
-  //setBorder(BorderFactory.createMatteBorder(1,1,1,2,new Color(150,150,150)));
-    //add(imageIcon, BorderLayout.WEST);
-    con.insets = new Insets(1, 1, 1, 1);
-    con.gridwidth = 1;
-    con.anchor = GridBagConstraints.WEST;
-    con.fill = GridBagConstraints.NONE;
-    gbl.setConstraints(nameLabel, con);
-    add(nameLabel);
-    JPanel pan = new JPanel();
-        pan.setOpaque(false);
-    con.fill = GridBagConstraints.HORIZONTAL;
-    con.weightx = 1;
-    gbl.setConstraints(pan, con);
-    add(pan);
-    con.weightx = 0;
-    con.fill = GridBagConstraints.NONE;
-    con.gridwidth = GridBagConstraints.REMAINDER;
-        gbl.setConstraints(close, con);
-    add(close);
-    }
-
-    public void actionPerformed(ActionEvent e) {
-    parent.hideAway(); //setVisible(false);
-    }
-}
index 1466947..146dd3f 100644 (file)
@@ -206,13 +206,13 @@ class TableColumnsTab extends JPanel implements PrefsTab {
                                writeSpecialFields.setEnabled(isEnabled);
                        }
                });
-               rankingColumn = new JCheckBox(Globals.lang("Show ranking"));
+               rankingColumn = new JCheckBox(Globals.lang("Show rank"));
                rankingColumn.addChangeListener(new ChangeListener() {
                        public void stateChanged(ChangeEvent event) {
                                compactRankingColumn.setEnabled(rankingColumn.isSelected());
                        }
                });
-               compactRankingColumn = new JCheckBox(Globals.lang("Compact ranking"));
+               compactRankingColumn = new JCheckBox(Globals.lang("Compact rank"));
                qualityColumn = new JCheckBox(Globals.lang("Show quality"));
                priorityColumn = new JCheckBox(Globals.lang("Show priority"));
                relevanceColumn = new JCheckBox(Globals.lang("Show relevance"));
index 926b038..636d29f 100644 (file)
@@ -31,6 +31,7 @@ import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.net.URLConnection;
 import java.net.URLDecoder;
 import java.nio.charset.Charset;
 import java.nio.charset.CharsetEncoder;
@@ -88,6 +89,7 @@ import net.sf.jabref.labelPattern.LabelPatternUtil;
 import net.sf.jabref.net.URLDownload;
 import net.sf.jabref.undo.NamedCompound;
 import net.sf.jabref.undo.UndoableFieldChange;
+import net.sf.jabref.util.FileNameCleaner;
 
 import com.jgoodies.forms.builder.DefaultFormBuilder;
 import com.jgoodies.forms.layout.FormLayout;
@@ -558,7 +560,7 @@ public class Util {
 
                if (fieldName.equals("url")) { // html
                        try {
-                               link = sanitizeUrl(link);
+                link = sanitizeUrl(link);
                 ExternalFileType fileType = Globals.prefs.getExternalFileTypeByExt("html");
                                if (Globals.ON_MAC) {
 
@@ -926,10 +928,15 @@ public static boolean openExternalFileUnknown(JabRefFrame frame, BibtexEntry ent
         }
 
         // converts doi-only link to full http address
-        if (checkForPlainDOI(link)) {
+        // Morten Alver 6 Nov 2012: this extracts a nonfunctional DOI from some complete
+        // http addresses (e.g. http://onlinelibrary.wiley.com/doi/10.1002/rra.999/abstract, where
+        // the trailing "/abstract" is included but doesn't lead to a resolvable DOI).
+        // To prevent mangling of working URLs I'm disabling this check if the link is already
+        // a full http link:
+        if (checkForPlainDOI(link) && !link.startsWith("http://")) {
             link = Globals.DOI_LOOKUP_PREFIX + getDOI(link);
         }
-        
+
                link = link.replaceAll("\\+", "%2B");
 
                try {
@@ -1914,9 +1921,20 @@ public static boolean openExternalFileUnknown(JabRefFrame frame, BibtexEntry ent
      * @return A CompoundEdit specifying the undo operation for the whole operation.
      */
     public static NamedCompound upgradePdfPsToFile(BibtexDatabase database, String[] fields) {
+       return upgradePdfPsToFile(database.getEntryMap().values(), fields);
+    }
+
+    /**
+     * Collect file links from the given set of fields, and add them to the list contained
+     * in the field GUIGlobals.FILE_FIELD.
+     * @param entries The entries to modify.
+     * @param fields The fields to find links in.
+     * @return A CompoundEdit specifying the undo operation for the whole operation.
+     */
+    public static NamedCompound upgradePdfPsToFile(Collection<BibtexEntry> entries, String[] fields) {
         NamedCompound ce = new NamedCompound(Globals.lang("Move external links to 'file' field"));
         
-        for (BibtexEntry entry : database.getEntryMap().values()){
+        for (BibtexEntry entry : entries){
             FileListTableModel tableModel = new FileListTableModel();
             // If there are already links in the file field, keep those on top:
             String oldFileContent = entry.getField(GUIGlobals.FILE_FIELD);
@@ -2998,6 +3016,13 @@ public static boolean openExternalFileUnknown(JabRefFrame frame, BibtexEntry ent
     }
 
 
+    /**
+     * Determines filename provided by an entry in a database
+     *
+     * @param database the database, where the entry is located
+     * @param entry the entry to which the file should be linked to
+     * @return a suggested fileName
+     */
     public static String getLinkedFileName(BibtexDatabase database, BibtexEntry entry) {
         String targetName = entry.getCiteKey() == null ? "default" : entry.getCiteKey();
                StringReader sr = new StringReader(Globals.prefs.get(ImportSettingsTab.PREF_IMPORT_FILENAMEPATTERN));
@@ -3011,10 +3036,7 @@ public static boolean openExternalFileUnknown(JabRefFrame frame, BibtexEntry ent
                        targetName = layout.doLayout(entry, database);
                }
                //Removes illegal characters from filename
-               String[] illegalChars = {"\\","/",":","*","?","\"","<",">","|"};
-               for(String s : illegalChars) {
-                       targetName = targetName.replace(s, "");
-               }
+               targetName = FileNameCleaner.cleanFileName(targetName);
         return targetName;
     }
     
@@ -3049,7 +3071,7 @@ public static boolean openExternalFileUnknown(JabRefFrame frame, BibtexEntry ent
         * Remove the http://... from DOI
         * 
         * @param doi - may not be null
-        * @return first DOI in the given String (without http://... prefix)
+        * @return first DOI in the given String (without http://... prefix). If no DOI exists, the complete string is returned
         */
        public static String getDOI(String doi) {
         Matcher matcher = PATTERN_PLAINDOI.matcher(doi);
@@ -3137,14 +3159,14 @@ public static boolean openExternalFileUnknown(JabRefFrame frame, BibtexEntry ent
        }
        
        /**
-        * @param nc indicates the undo named compound. May be null
+        * @param ce indicates the undo named compound. May be null
         */
        public static void updateField(BibtexEntry be, String field, String newValue, NamedCompound ce) {
                updateField(be, field, newValue, ce, false);
        }
 
        /**
-        * @param nc indicates the undo named compound. May be null
+        * @param ce indicates the undo named compound. May be null
         */
        public static void updateField(BibtexEntry be, String field, String newValue, NamedCompound ce, Boolean nullFieldIfValueIsTheSame) {
                String oldValue = be.getField(field);
@@ -3172,5 +3194,25 @@ public static boolean openExternalFileUnknown(JabRefFrame frame, BibtexEntry ent
            im.put(Globals.prefs.getKey("Close dialog"), "close");
            am.put("close", cancelAction);
     }
+
+       /**
+        * Download the URL and return contents as a String.
+        * @param source
+        * @return
+        * @throws IOException
+        */
+       public static String getResults(URLConnection source) throws IOException {
+           
+           InputStream in = source.getInputStream();
+           StringBuffer sb = new StringBuffer();
+           byte[] buffer = new byte[256];
+           while(true) {
+               int bytesRead = in.read(buffer);
+               if(bytesRead == -1) break;
+               for (int i=0; i<bytesRead; i++)
+                   sb.append((char)buffer[i]);
+           }
+           return sb.toString();
+       }
 }
 
diff --git a/src/java/net/sf/jabref/bst/.gitignore b/src/java/net/sf/jabref/bst/.gitignore
new file mode 100644 (file)
index 0000000..5a43c09
--- /dev/null
@@ -0,0 +1 @@
+Bst.tokens
diff --git a/src/java/net/sf/jabref/bst/Bst.g b/src/java/net/sf/jabref/bst/Bst.g
new file mode 100644 (file)
index 0000000..24f4f74
--- /dev/null
@@ -0,0 +1,96 @@
+grammar Bst;
+
+options {
+    output=AST;
+}
+
+tokens {
+       IDLIST;
+       STACK;
+       ENTRY;
+       COMMANDS;
+}
+
+// applies only to the parser:
+@header {// Generated by ANTLR
+package net.sf.jabref.bst;}
+
+// applies only to the lexer:
+@lexer::header {// Generated by ANTLR
+package net.sf.jabref.bst;}
+
+program : commands+ -> ^(COMMANDS commands+);
+
+commands 
+       : STRINGS^ idList
+       | INTEGERS^ idList
+       | FUNCTION^ id stack
+       | MACRO^ id '{'! STRING '}'!
+       | READ^
+       | EXECUTE^ '{'! function '}'!
+       | ITERATE^ '{'! function '}'!
+       | REVERSE^ '{'! function '}'!
+       | ENTRY^ idList0 idList0 idList0
+       | SORT^;
+
+identifier 
+       : IDENTIFIER;
+
+id 
+       : '{'! identifier '}'!;
+       
+idList 
+       : '{' identifier+ '}' -> ^(IDLIST identifier+);
+       
+idList0 
+       : '{' identifier* '}' -> ^(IDLIST identifier*);
+
+function 
+       : '<' | '>' | '=' | '+' | '-' | ':=' | '*' | identifier;
+       
+stack 
+       : '{' stackitem+ '}' -> ^(STACK stackitem+);
+       
+stackitem
+       : function
+       | STRING 
+       | INTEGER 
+       | QUOTED
+       | stack;
+
+STRINGS : 'STRINGS';
+INTEGERS : 'INTEGERS';
+FUNCTION : 'FUNCTION';
+EXECUTE : 'EXECUTE';
+SORT : 'SORT';
+ITERATE : 'ITERATE';
+REVERSE : 'REVERSE';
+ENTRY : 'ENTRY';
+READ : 'READ';
+MACRO : 'MACRO';
+
+QUOTED
+       : '\'' IDENTIFIER;
+
+IDENTIFIER
+       : LETTER (LETTER|NUMERAL)* ;
+
+fragment LETTER
+       : ('a'..'z'|'A'..'Z'|'.'|'$');
+
+STRING
+       : '"' (~('"'))* '"';
+       
+INTEGER   
+       : '#' ('+'|'-')? NUMERAL+ ;
+
+fragment NUMERAL
+       : ('0'..'9');
+       
+WS
+       : (' '|'\t'|'\n')+ {_channel=99;} ;
+       
+LINE_COMMENT
+    : '%' ~('\n'|'\r')* '\r'? '\n' {_channel=99;}
+    ;
+       
index bee5599..fe9ec15 100644 (file)
-/*  Copyright (C) 2003-2011 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.
-*/
+// $ANTLR 3.4 C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g 2012-10-28 23:48:28
+// Generated by ANTLR
 package net.sf.jabref.bst;
 
-// $ANTLR 3.0b5 Bst.g 2006-11-23 23:20:24
-
-import org.antlr.runtime.CharStream;
-import org.antlr.runtime.EarlyExitException;
-import org.antlr.runtime.Lexer;
-import org.antlr.runtime.MismatchedSetException;
-import org.antlr.runtime.NoViableAltException;
-import org.antlr.runtime.RecognitionException;
-import org.antlr.runtime.Token;
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
 
+@SuppressWarnings({"all", "warnings", "unchecked"})
 public class BstLexer extends Lexer {
-    public static final int LETTER=21;
-    public static final int T29=29;
-    public static final int T33=33;
-    public static final int INTEGERS=9;
-    public static final int ENTRY=6;
-    public static final int WS=23;
-    public static final int COMMANDS=7;
-    public static final int STRING=12;
-    public static final int T28=28;
-    public static final int EXECUTE=14;
-    public static final int LINE_COMMENT=24;
-    public static final int SORT=17;
-    public static final int STACK=5;
-    public static final int REVERSE=16;
-    public static final int QUOTED=20;
-    public static final int T25=25;
-    public static final int INTEGER=19;
-    public static final int ITERATE=15;
-    public static final int FUNCTION=10;
-    public static final int T26=26;
     public static final int EOF=-1;
-    public static final int T32=32;
-    public static final int Tokens=34;
-    public static final int STRINGS=8;
-    public static final int T31=31;
-    public static final int T27=27;
-    public static final int IDENTIFIER=18;
-    public static final int MACRO=11;
-    public static final int T30=30;
-    public static final int IDLIST=4;
-    public static final int NUMERAL=22;
-    public static final int READ=13;
-    public BstLexer() {
-        
-    } 
+    public static final int T__25=25;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__33=33;
+    public static final int COMMANDS=4;
+    public static final int ENTRY=5;
+    public static final int EXECUTE=6;
+    public static final int FUNCTION=7;
+    public static final int IDENTIFIER=8;
+    public static final int IDLIST=9;
+    public static final int INTEGER=10;
+    public static final int INTEGERS=11;
+    public static final int ITERATE=12;
+    public static final int LETTER=13;
+    public static final int LINE_COMMENT=14;
+    public static final int MACRO=15;
+    public static final int NUMERAL=16;
+    public static final int QUOTED=17;
+    public static final int READ=18;
+    public static final int REVERSE=19;
+    public static final int SORT=20;
+    public static final int STACK=21;
+    public static final int STRING=22;
+    public static final int STRINGS=23;
+    public static final int WS=24;
+
+    // delegates
+    // delegators
+    public Lexer[] getDelegates() {
+        return new Lexer[] {};
+    }
+
+    public BstLexer() {} 
     public BstLexer(CharStream input) {
-        super(input);
+        this(input, new RecognizerSharedState());
     }
-    public String getGrammarFileName() { return "Bst.g"; }
+    public BstLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+    }
+    public String getGrammarFileName() { return "C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g"; }
 
-    // $ANTLR start T25
-    public void mT25() throws RecognitionException {
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
         try {
-            ruleNestingLevel++;
-            int _type = T25;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:3:7: ( '{' )
-            // Bst.g:3:7: '{'
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:5:7: ( '*' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:5:9: '*'
             {
-            match('{'); 
+            match('*'); 
 
             }
 
-
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end T25
+    // $ANTLR end "T__25"
 
-    // $ANTLR start T26
-    public void mT26() throws RecognitionException {
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
         try {
-            ruleNestingLevel++;
-            int _type = T26;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:4:7: ( '}' )
-            // Bst.g:4:7: '}'
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:6:7: ( '+' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:6:9: '+'
             {
-            match('}'); 
+            match('+'); 
 
             }
 
-
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end T26
+    // $ANTLR end "T__26"
 
-    // $ANTLR start T27
-    public void mT27() throws RecognitionException {
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
         try {
-            ruleNestingLevel++;
-            int _type = T27;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:5:7: ( '<' )
-            // Bst.g:5:7: '<'
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:7:7: ( '-' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:7:9: '-'
             {
-            match('<'); 
+            match('-'); 
 
             }
 
-
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end T27
+    // $ANTLR end "T__27"
 
-    // $ANTLR start T28
-    public void mT28() throws RecognitionException {
+    // $ANTLR start "T__28"
+    public final void mT__28() throws RecognitionException {
         try {
-            ruleNestingLevel++;
-            int _type = T28;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:6:7: ( '>' )
-            // Bst.g:6:7: '>'
+            int _type = T__28;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:8:7: ( ':=' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:8:9: ':='
             {
-            match('>'); 
-
-            }
+            match(":="); 
 
 
 
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
+            }
 
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end T28
+    // $ANTLR end "T__28"
 
-    // $ANTLR start T29
-    public void mT29() throws RecognitionException {
+    // $ANTLR start "T__29"
+    public final void mT__29() throws RecognitionException {
         try {
-            ruleNestingLevel++;
-            int _type = T29;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:7:7: ( '=' )
-            // Bst.g:7:7: '='
+            int _type = T__29;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:9:7: ( '<' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:9:9: '<'
             {
-            match('='); 
+            match('<'); 
 
             }
 
-
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end T29
+    // $ANTLR end "T__29"
 
-    // $ANTLR start T30
-    public void mT30() throws RecognitionException {
+    // $ANTLR start "T__30"
+    public final void mT__30() throws RecognitionException {
         try {
-            ruleNestingLevel++;
-            int _type = T30;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:8:7: ( '+' )
-            // Bst.g:8:7: '+'
+            int _type = T__30;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:10:7: ( '=' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:10:9: '='
             {
-            match('+'); 
+            match('='); 
 
             }
 
-
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end T30
+    // $ANTLR end "T__30"
 
-    // $ANTLR start T31
-    public void mT31() throws RecognitionException {
+    // $ANTLR start "T__31"
+    public final void mT__31() throws RecognitionException {
         try {
-            ruleNestingLevel++;
-            int _type = T31;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:9:7: ( '-' )
-            // Bst.g:9:7: '-'
+            int _type = T__31;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:11:7: ( '>' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:11:9: '>'
             {
-            match('-'); 
+            match('>'); 
 
             }
 
-
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end T31
+    // $ANTLR end "T__31"
 
-    // $ANTLR start T32
-    public void mT32() throws RecognitionException {
+    // $ANTLR start "T__32"
+    public final void mT__32() throws RecognitionException {
         try {
-            ruleNestingLevel++;
-            int _type = T32;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:10:7: ( ':=' )
-            // Bst.g:10:7: ':='
+            int _type = T__32;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:12:7: ( '{' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:12:9: '{'
             {
-            match(":="); 
-
+            match('{'); 
 
             }
 
-
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end T32
+    // $ANTLR end "T__32"
 
-    // $ANTLR start T33
-    public void mT33() throws RecognitionException {
+    // $ANTLR start "T__33"
+    public final void mT__33() throws RecognitionException {
         try {
-            ruleNestingLevel++;
-            int _type = T33;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:11:7: ( '*' )
-            // Bst.g:11:7: '*'
+            int _type = T__33;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:13:7: ( '}' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:13:9: '}'
             {
-            match('*'); 
+            match('}'); 
 
             }
 
-
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end T33
+    // $ANTLR end "T__33"
 
-    // $ANTLR start STRINGS
-    public void mSTRINGS() throws RecognitionException {
+    // $ANTLR start "STRINGS"
+    public final void mSTRINGS() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = STRINGS;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:53:11: ( 'STRINGS' )
-            // Bst.g:53:11: 'STRINGS'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:61:9: ( 'STRINGS' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:61:11: 'STRINGS'
             {
             match("STRINGS"); 
 
 
-            }
-
-
 
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
+            }
 
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end STRINGS
+    // $ANTLR end "STRINGS"
 
-    // $ANTLR start INTEGERS
-    public void mINTEGERS() throws RecognitionException {
+    // $ANTLR start "INTEGERS"
+    public final void mINTEGERS() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = INTEGERS;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:54:12: ( 'INTEGERS' )
-            // Bst.g:54:12: 'INTEGERS'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:62:10: ( 'INTEGERS' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:62:12: 'INTEGERS'
             {
             match("INTEGERS"); 
 
 
-            }
 
+            }
 
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end INTEGERS
+    // $ANTLR end "INTEGERS"
 
-    // $ANTLR start FUNCTION
-    public void mFUNCTION() throws RecognitionException {
+    // $ANTLR start "FUNCTION"
+    public final void mFUNCTION() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = FUNCTION;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:55:12: ( 'FUNCTION' )
-            // Bst.g:55:12: 'FUNCTION'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:63:10: ( 'FUNCTION' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:63:12: 'FUNCTION'
             {
             match("FUNCTION"); 
 
 
-            }
-
 
+            }
 
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end FUNCTION
+    // $ANTLR end "FUNCTION"
 
-    // $ANTLR start EXECUTE
-    public void mEXECUTE() throws RecognitionException {
+    // $ANTLR start "EXECUTE"
+    public final void mEXECUTE() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = EXECUTE;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:56:11: ( 'EXECUTE' )
-            // Bst.g:56:11: 'EXECUTE'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:64:9: ( 'EXECUTE' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:64:11: 'EXECUTE'
             {
             match("EXECUTE"); 
 
 
-            }
-
 
+            }
 
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end EXECUTE
+    // $ANTLR end "EXECUTE"
 
-    // $ANTLR start SORT
-    public void mSORT() throws RecognitionException {
+    // $ANTLR start "SORT"
+    public final void mSORT() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = SORT;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:57:8: ( 'SORT' )
-            // Bst.g:57:8: 'SORT'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:65:6: ( 'SORT' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:65:8: 'SORT'
             {
             match("SORT"); 
 
 
-            }
 
+            }
 
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end SORT
+    // $ANTLR end "SORT"
 
-    // $ANTLR start ITERATE
-    public void mITERATE() throws RecognitionException {
+    // $ANTLR start "ITERATE"
+    public final void mITERATE() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = ITERATE;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:58:11: ( 'ITERATE' )
-            // Bst.g:58:11: 'ITERATE'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:66:9: ( 'ITERATE' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:66:11: 'ITERATE'
             {
             match("ITERATE"); 
 
 
-            }
-
-
 
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
+            }
 
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end ITERATE
+    // $ANTLR end "ITERATE"
 
-    // $ANTLR start REVERSE
-    public void mREVERSE() throws RecognitionException {
+    // $ANTLR start "REVERSE"
+    public final void mREVERSE() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = REVERSE;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:59:11: ( 'REVERSE' )
-            // Bst.g:59:11: 'REVERSE'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:67:9: ( 'REVERSE' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:67:11: 'REVERSE'
             {
             match("REVERSE"); 
 
 
-            }
-
-
 
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
+            }
 
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end REVERSE
+    // $ANTLR end "REVERSE"
 
-    // $ANTLR start ENTRY
-    public void mENTRY() throws RecognitionException {
+    // $ANTLR start "ENTRY"
+    public final void mENTRY() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = ENTRY;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:60:9: ( 'ENTRY' )
-            // Bst.g:60:9: 'ENTRY'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:68:7: ( 'ENTRY' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:68:9: 'ENTRY'
             {
             match("ENTRY"); 
 
 
-            }
-
 
+            }
 
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end ENTRY
+    // $ANTLR end "ENTRY"
 
-    // $ANTLR start READ
-    public void mREAD() throws RecognitionException {
+    // $ANTLR start "READ"
+    public final void mREAD() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = READ;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:61:8: ( 'READ' )
-            // Bst.g:61:8: 'READ'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:69:6: ( 'READ' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:69:8: 'READ'
             {
             match("READ"); 
 
 
-            }
-
-
 
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
+            }
 
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end READ
+    // $ANTLR end "READ"
 
-    // $ANTLR start MACRO
-    public void mMACRO() throws RecognitionException {
+    // $ANTLR start "MACRO"
+    public final void mMACRO() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = MACRO;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:62:9: ( 'MACRO' )
-            // Bst.g:62:9: 'MACRO'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:70:7: ( 'MACRO' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:70:9: 'MACRO'
             {
             match("MACRO"); 
 
 
-            }
 
+            }
 
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end MACRO
+    // $ANTLR end "MACRO"
 
-    // $ANTLR start QUOTED
-    public void mQUOTED() throws RecognitionException {
+    // $ANTLR start "QUOTED"
+    public final void mQUOTED() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = QUOTED;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:65:4: ( '\\'' IDENTIFIER )
-            // Bst.g:65:4: '\\'' IDENTIFIER
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:73:2: ( '\\'' IDENTIFIER )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:73:4: '\\'' IDENTIFIER
             {
             match('\''); 
-            mIDENTIFIER(); 
-
-            }
 
+            mIDENTIFIER(); 
 
 
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
+            }
 
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end QUOTED
+    // $ANTLR end "QUOTED"
 
-    // $ANTLR start IDENTIFIER
-    public void mIDENTIFIER() throws RecognitionException {
+    // $ANTLR start "IDENTIFIER"
+    public final void mIDENTIFIER() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = IDENTIFIER;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:68:4: ( LETTER ( LETTER | NUMERAL )* )
-            // Bst.g:68:4: LETTER ( LETTER | NUMERAL )*
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:76:2: ( LETTER ( LETTER | NUMERAL )* )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:76:4: LETTER ( LETTER | NUMERAL )*
             {
             mLETTER(); 
-            // Bst.g:68:11: ( LETTER | NUMERAL )*
+
+
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:76:11: ( LETTER | NUMERAL )*
             loop1:
             do {
-                int alt1=3;
+                int alt1=2;
                 int LA1_0 = input.LA(1);
-                if ( (LA1_0=='$'||LA1_0=='.'||(LA1_0>='A' && LA1_0<='Z')||(LA1_0>='a' && LA1_0<='z')) ) {
+
+                if ( (LA1_0=='$'||LA1_0=='.'||(LA1_0 >= '0' && LA1_0 <= '9')||(LA1_0 >= 'A' && LA1_0 <= 'Z')||(LA1_0 >= 'a' && LA1_0 <= 'z')) ) {
                     alt1=1;
                 }
-                else if ( ((LA1_0>='0' && LA1_0<='9')) ) {
-                    alt1=2;
-                }
 
 
                 switch (alt1) {
                case 1 :
-                   // Bst.g:68:12: LETTER
+                   // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:
                    {
-                   mLETTER(); 
-
+                   if ( input.LA(1)=='$'||input.LA(1)=='.'||(input.LA(1) >= '0' && input.LA(1) <= '9')||(input.LA(1) >= 'A' && input.LA(1) <= 'Z')||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) {
+                       input.consume();
+                   }
+                   else {
+                       MismatchedSetException mse = new MismatchedSetException(null,input);
+                       recover(mse);
+                       throw mse;
                    }
-                   break;
-               case 2 :
-                   // Bst.g:68:19: NUMERAL
-                   {
-                   mNUMERAL(); 
+
 
                    }
                    break;
@@ -708,81 +548,73 @@ public class BstLexer extends Lexer {
 
             }
 
-
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end IDENTIFIER
+    // $ANTLR end "IDENTIFIER"
 
-    // $ANTLR start LETTER
-    public void mLETTER() throws RecognitionException {
+    // $ANTLR start "LETTER"
+    public final void mLETTER() throws RecognitionException {
         try {
-            ruleNestingLevel++;
-            // Bst.g:71:4: ( ('a'..'z'|'A'..'Z'|'.'|'$'))
-            // Bst.g:71:4: ('a'..'z'|'A'..'Z'|'.'|'$')
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:79:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '.' | '$' ) )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:
             {
-            if ( input.LA(1)=='$'||input.LA(1)=='.'||(input.LA(1)>='A' && input.LA(1)<='Z')||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            if ( input.LA(1)=='$'||input.LA(1)=='.'||(input.LA(1) >= 'A' && input.LA(1) <= 'Z')||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) {
                 input.consume();
-
             }
             else {
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;
             }
 
 
             }
 
+
         }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end LETTER
+    // $ANTLR end "LETTER"
 
-    // $ANTLR start STRING
-    public void mSTRING() throws RecognitionException {
+    // $ANTLR start "STRING"
+    public final void mSTRING() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = STRING;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:74:4: ( '\"' (~ '\"' )* '\"' )
-            // Bst.g:74:4: '\"' (~ '\"' )* '\"'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:82:2: ( '\"' (~ ( '\"' ) )* '\"' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:82:4: '\"' (~ ( '\"' ) )* '\"'
             {
             match('\"'); 
-            // Bst.g:74:8: (~ '\"' )*
+
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:82:8: (~ ( '\"' ) )*
             loop2:
             do {
                 int alt2=2;
                 int LA2_0 = input.LA(1);
-                if ( ((LA2_0>='\u0000' && LA2_0<='!')||(LA2_0>='#' && LA2_0<='\uFFFE')) ) {
+
+                if ( ((LA2_0 >= '\u0000' && LA2_0 <= '!')||(LA2_0 >= '#' && LA2_0 <= '\uFFFF')) ) {
                     alt2=1;
                 }
 
 
                 switch (alt2) {
                case 1 :
-                   // Bst.g:74:9: ~ '\"'
+                   // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:
                    {
-                   if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='\uFFFE') ) {
+                   if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '!')||(input.LA(1) >= '#' && input.LA(1) <= '\uFFFF') ) {
                        input.consume();
-
                    }
                    else {
-                       MismatchedSetException mse =
-                           new MismatchedSetException(null,input);
-                       recover(mse);    throw mse;
+                       MismatchedSetException mse = new MismatchedSetException(null,input);
+                       recover(mse);
+                       throw mse;
                    }
 
 
@@ -794,54 +626,48 @@ public class BstLexer extends Lexer {
                 }
             } while (true);
 
+
             match('\"'); 
 
             }
 
-
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end STRING
+    // $ANTLR end "STRING"
 
-    // $ANTLR start INTEGER
-    public void mINTEGER() throws RecognitionException {
+    // $ANTLR start "INTEGER"
+    public final void mINTEGER() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = INTEGER;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:77:4: ( '#' ( ('+'|'-'))? ( NUMERAL )+ )
-            // Bst.g:77:4: '#' ( ('+'|'-'))? ( NUMERAL )+
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:85:2: ( '#' ( '+' | '-' )? ( NUMERAL )+ )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:85:4: '#' ( '+' | '-' )? ( NUMERAL )+
             {
             match('#'); 
-            // Bst.g:77:8: ( ('+'|'-'))?
+
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:85:8: ( '+' | '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
+
             if ( (LA3_0=='+'||LA3_0=='-') ) {
                 alt3=1;
             }
             switch (alt3) {
                 case 1 :
-                    // Bst.g:77:9: ('+'|'-')
+                    // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:
                     {
                     if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
                         input.consume();
-
                     }
                     else {
-                        MismatchedSetException mse =
-                            new MismatchedSetException(null,input);
-                        recover(mse);    throw mse;
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;
                     }
 
 
@@ -850,22 +676,32 @@ public class BstLexer extends Lexer {
 
             }
 
-            // Bst.g:77:19: ( NUMERAL )+
+
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:85:19: ( NUMERAL )+
             int cnt4=0;
             loop4:
             do {
                 int alt4=2;
                 int LA4_0 = input.LA(1);
-                if ( ((LA4_0>='0' && LA4_0<='9')) ) {
+
+                if ( ((LA4_0 >= '0' && LA4_0 <= '9')) ) {
                     alt4=1;
                 }
 
 
                 switch (alt4) {
                case 1 :
-                   // Bst.g:77:19: NUMERAL
+                   // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:
                    {
-                   mNUMERAL(); 
+                   if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) {
+                       input.consume();
+                   }
+                   else {
+                       MismatchedSetException mse = new MismatchedSetException(null,input);
+                       recover(mse);
+                       throw mse;
+                   }
+
 
                    }
                    break;
@@ -882,78 +718,72 @@ public class BstLexer extends Lexer {
 
             }
 
-
-
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end INTEGER
+    // $ANTLR end "INTEGER"
 
-    // $ANTLR start NUMERAL
-    public void mNUMERAL() throws RecognitionException {
+    // $ANTLR start "NUMERAL"
+    public final void mNUMERAL() throws RecognitionException {
         try {
-            ruleNestingLevel++;
-            // Bst.g:80:4: ( ( '0' .. '9' ) )
-            // Bst.g:80:4: ( '0' .. '9' )
-            {
-            // Bst.g:80:4: ( '0' .. '9' )
-            // Bst.g:80:5: '0' .. '9'
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:88:2: ( ( '0' .. '9' ) )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:
             {
-            matchRange('0','9'); 
-
+            if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) {
+                input.consume();
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;
             }
 
 
             }
 
+
         }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end NUMERAL
+    // $ANTLR end "NUMERAL"
 
-    // $ANTLR start WS
-    public void mWS() throws RecognitionException {
+    // $ANTLR start "WS"
+    public final void mWS() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = WS;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:82:9: ( ( (' '|'\\t'|'\\r'|'\\n'))+ )
-            // Bst.g:82:9: ( (' '|'\\t'|'\\r'|'\\n'))+
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:91:2: ( ( ' ' | '\\t' | '\\n' )+ )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:91:4: ( ' ' | '\\t' | '\\n' )+
             {
-            // Bst.g:82:9: ( (' '|'\\t'|'\\r'|'\\n'))+
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:91:4: ( ' ' | '\\t' | '\\n' )+
             int cnt5=0;
             loop5:
             do {
                 int alt5=2;
                 int LA5_0 = input.LA(1);
-                if ( ((LA5_0>='\t' && LA5_0<='\n')||LA5_0=='\r'||LA5_0==' ') ) {
+
+                if ( ((LA5_0 >= '\t' && LA5_0 <= '\n')||LA5_0==' ') ) {
                     alt5=1;
                 }
 
 
                 switch (alt5) {
                case 1 :
-                   // Bst.g:82:13: (' '|'\\t'|'\\r'|'\\n')
+                   // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:
                    {
-                   if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+                   if ( (input.LA(1) >= '\t' && input.LA(1) <= '\n')||input.LA(1)==' ' ) {
                        input.consume();
-
                    }
                    else {
-                       MismatchedSetException mse =
-                           new MismatchedSetException(null,input);
-                       recover(mse);    throw mse;
+                       MismatchedSetException mse = new MismatchedSetException(null,input);
+                       recover(mse);
+                       throw mse;
                    }
 
 
@@ -969,58 +799,52 @@ public class BstLexer extends Lexer {
                 cnt5++;
             } while (true);
 
-             _channel=HIDDEN; 
-
-            }
 
+            _channel=99;
 
+            }
 
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
-
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end WS
+    // $ANTLR end "WS"
 
-    // $ANTLR start LINE_COMMENT
-    public void mLINE_COMMENT() throws RecognitionException {
+    // $ANTLR start "LINE_COMMENT"
+    public final void mLINE_COMMENT() throws RecognitionException {
         try {
-            ruleNestingLevel++;
             int _type = LINE_COMMENT;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // Bst.g:90:7: ( '%' (~ ('\\n'|'\\r'))* ( '\\r' )? '\\n' )
-            // Bst.g:90:7: '%' (~ ('\\n'|'\\r'))* ( '\\r' )? '\\n'
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:94:5: ( '%' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:94:7: '%' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
             {
             match('%'); 
-            // Bst.g:90:11: (~ ('\\n'|'\\r'))*
+
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:94:11: (~ ( '\\n' | '\\r' ) )*
             loop6:
             do {
                 int alt6=2;
                 int LA6_0 = input.LA(1);
-                if ( ((LA6_0>='\u0000' && LA6_0<='\t')||(LA6_0>='\u000B' && LA6_0<='\f')||(LA6_0>='\u000E' && LA6_0<='\uFFFE')) ) {
+
+                if ( ((LA6_0 >= '\u0000' && LA6_0 <= '\t')||(LA6_0 >= '\u000B' && LA6_0 <= '\f')||(LA6_0 >= '\u000E' && LA6_0 <= '\uFFFF')) ) {
                     alt6=1;
                 }
 
 
                 switch (alt6) {
                case 1 :
-                   // Bst.g:90:11: ~ ('\\n'|'\\r')
+                   // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:
                    {
-                   if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFE') ) {
+                   if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '\t')||(input.LA(1) >= '\u000B' && input.LA(1) <= '\f')||(input.LA(1) >= '\u000E' && input.LA(1) <= '\uFFFF') ) {
                        input.consume();
-
                    }
                    else {
-                       MismatchedSetException mse =
-                           new MismatchedSetException(null,input);
-                       recover(mse);    throw mse;
+                       MismatchedSetException mse = new MismatchedSetException(null,input);
+                       recover(mse);
+                       throw mse;
                    }
 
 
@@ -1032,15 +856,17 @@ public class BstLexer extends Lexer {
                 }
             } while (true);
 
-            // Bst.g:90:25: ( '\\r' )?
+
+            // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:94:25: ( '\\r' )?
             int alt7=2;
             int LA7_0 = input.LA(1);
+
             if ( (LA7_0=='\r') ) {
                 alt7=1;
             }
             switch (alt7) {
                 case 1 :
-                    // Bst.g:90:25: '\\r'
+                    // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:94:25: '\\r'
                     {
                     match('\r'); 
 
@@ -1049,623 +875,225 @@ public class BstLexer extends Lexer {
 
             }
 
-            match('\n'); 
-             _channel=HIDDEN; 
-
-            }
 
+            match('\n'); 
 
+            _channel=99;
 
-                    if ( token==null && ruleNestingLevel==1 ) {
-                        emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                    }
+            }
 
-                        }
+            state.type = _type;
+            state.channel = _channel;
+        }
         finally {
-            ruleNestingLevel--;
+               // do for sure before leaving
         }
     }
-    // $ANTLR end LINE_COMMENT
+    // $ANTLR end "LINE_COMMENT"
 
     public void mTokens() throws RecognitionException {
-        // Bst.g:1:10: ( T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | STRINGS | INTEGERS | FUNCTION | EXECUTE | SORT | ITERATE | REVERSE | ENTRY | READ | MACRO | QUOTED | IDENTIFIER | STRING | INTEGER | WS | LINE_COMMENT )
+        // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:8: ( T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | STRINGS | INTEGERS | FUNCTION | EXECUTE | SORT | ITERATE | REVERSE | ENTRY | READ | MACRO | QUOTED | IDENTIFIER | STRING | INTEGER | WS | LINE_COMMENT )
         int alt8=25;
-        switch ( input.LA(1) ) {
-        case '{':
-            alt8=1;
-            break;
-        case '}':
-            alt8=2;
-            break;
-        case '<':
-            alt8=3;
-            break;
-        case '>':
-            alt8=4;
-            break;
-        case '=':
-            alt8=5;
-            break;
-        case '+':
-            alt8=6;
-            break;
-        case '-':
-            alt8=7;
-            break;
-        case ':':
-            alt8=8;
-            break;
-        case '*':
-            alt8=9;
-            break;
-        case 'S':
-            switch ( input.LA(2) ) {
-            case 'T':
-                int LA8_22 = input.LA(3);
-                if ( (LA8_22=='R') ) {
-                    int LA8_31 = input.LA(4);
-                    if ( (LA8_31=='I') ) {
-                        int LA8_41 = input.LA(5);
-                        if ( (LA8_41=='N') ) {
-                            int LA8_51 = input.LA(6);
-                            if ( (LA8_51=='G') ) {
-                                int LA8_61 = input.LA(7);
-                                if ( (LA8_61=='S') ) {
-                                    int LA8_69 = input.LA(8);
-                                    if ( (LA8_69=='$'||LA8_69=='.'||(LA8_69>='0' && LA8_69<='9')||(LA8_69>='A' && LA8_69<='Z')||(LA8_69>='a' && LA8_69<='z')) ) {
-                                        alt8=21;
-                                    }
-                                    else {
-                                        alt8=10;}
-                                }
-                                else {
-                                    alt8=21;}
-                            }
-                            else {
-                                alt8=21;}
-                        }
-                        else {
-                            alt8=21;}
-                    }
-                    else {
-                        alt8=21;}
-                }
-                else {
-                    alt8=21;}
-                break;
-            case 'O':
-                int LA8_23 = input.LA(3);
-                if ( (LA8_23=='R') ) {
-                    int LA8_32 = input.LA(4);
-                    if ( (LA8_32=='T') ) {
-                        int LA8_42 = input.LA(5);
-                        if ( (LA8_42=='$'||LA8_42=='.'||(LA8_42>='0' && LA8_42<='9')||(LA8_42>='A' && LA8_42<='Z')||(LA8_42>='a' && LA8_42<='z')) ) {
-                            alt8=21;
-                        }
-                        else {
-                            alt8=14;}
-                    }
-                    else {
-                        alt8=21;}
-                }
-                else {
-                    alt8=21;}
-                break;
-            default:
-                alt8=21;}
-
-            break;
-        case 'I':
-            switch ( input.LA(2) ) {
-            case 'T':
-                int LA8_24 = input.LA(3);
-                if ( (LA8_24=='E') ) {
-                    int LA8_33 = input.LA(4);
-                    if ( (LA8_33=='R') ) {
-                        int LA8_43 = input.LA(5);
-                        if ( (LA8_43=='A') ) {
-                            int LA8_53 = input.LA(6);
-                            if ( (LA8_53=='T') ) {
-                                int LA8_62 = input.LA(7);
-                                if ( (LA8_62=='E') ) {
-                                    int LA8_70 = input.LA(8);
-                                    if ( (LA8_70=='$'||LA8_70=='.'||(LA8_70>='0' && LA8_70<='9')||(LA8_70>='A' && LA8_70<='Z')||(LA8_70>='a' && LA8_70<='z')) ) {
-                                        alt8=21;
-                                    }
-                                    else {
-                                        alt8=15;}
-                                }
-                                else {
-                                    alt8=21;}
-                            }
-                            else {
-                                alt8=21;}
-                        }
-                        else {
-                            alt8=21;}
-                    }
-                    else {
-                        alt8=21;}
-                }
-                else {
-                    alt8=21;}
-                break;
-            case 'N':
-                int LA8_25 = input.LA(3);
-                if ( (LA8_25=='T') ) {
-                    int LA8_34 = input.LA(4);
-                    if ( (LA8_34=='E') ) {
-                        int LA8_44 = input.LA(5);
-                        if ( (LA8_44=='G') ) {
-                            int LA8_54 = input.LA(6);
-                            if ( (LA8_54=='E') ) {
-                                int LA8_63 = input.LA(7);
-                                if ( (LA8_63=='R') ) {
-                                    int LA8_71 = input.LA(8);
-                                    if ( (LA8_71=='S') ) {
-                                        int LA8_77 = input.LA(9);
-                                        if ( (LA8_77=='$'||LA8_77=='.'||(LA8_77>='0' && LA8_77<='9')||(LA8_77>='A' && LA8_77<='Z')||(LA8_77>='a' && LA8_77<='z')) ) {
-                                            alt8=21;
-                                        }
-                                        else {
-                                            alt8=11;}
-                                    }
-                                    else {
-                                        alt8=21;}
-                                }
-                                else {
-                                    alt8=21;}
-                            }
-                            else {
-                                alt8=21;}
-                        }
-                        else {
-                            alt8=21;}
-                    }
-                    else {
-                        alt8=21;}
-                }
-                else {
-                    alt8=21;}
-                break;
-            default:
-                alt8=21;}
-
-            break;
-        case 'F':
-            int LA8_12 = input.LA(2);
-            if ( (LA8_12=='U') ) {
-                int LA8_26 = input.LA(3);
-                if ( (LA8_26=='N') ) {
-                    int LA8_35 = input.LA(4);
-                    if ( (LA8_35=='C') ) {
-                        int LA8_45 = input.LA(5);
-                        if ( (LA8_45=='T') ) {
-                            int LA8_55 = input.LA(6);
-                            if ( (LA8_55=='I') ) {
-                                int LA8_64 = input.LA(7);
-                                if ( (LA8_64=='O') ) {
-                                    int LA8_72 = input.LA(8);
-                                    if ( (LA8_72=='N') ) {
-                                        int LA8_78 = input.LA(9);
-                                        if ( (LA8_78=='$'||LA8_78=='.'||(LA8_78>='0' && LA8_78<='9')||(LA8_78>='A' && LA8_78<='Z')||(LA8_78>='a' && LA8_78<='z')) ) {
-                                            alt8=21;
-                                        }
-                                        else {
-                                            alt8=12;}
-                                    }
-                                    else {
-                                        alt8=21;}
-                                }
-                                else {
-                                    alt8=21;}
-                            }
-                            else {
-                                alt8=21;}
-                        }
-                        else {
-                            alt8=21;}
-                    }
-                    else {
-                        alt8=21;}
-                }
-                else {
-                    alt8=21;}
-            }
-            else {
-                alt8=21;}
-            break;
-        case 'E':
-            switch ( input.LA(2) ) {
-            case 'N':
-                int LA8_27 = input.LA(3);
-                if ( (LA8_27=='T') ) {
-                    int LA8_36 = input.LA(4);
-                    if ( (LA8_36=='R') ) {
-                        int LA8_46 = input.LA(5);
-                        if ( (LA8_46=='Y') ) {
-                            int LA8_56 = input.LA(6);
-                            if ( (LA8_56=='$'||LA8_56=='.'||(LA8_56>='0' && LA8_56<='9')||(LA8_56>='A' && LA8_56<='Z')||(LA8_56>='a' && LA8_56<='z')) ) {
-                                alt8=21;
-                            }
-                            else {
-                                alt8=17;}
-                        }
-                        else {
-                            alt8=21;}
-                    }
-                    else {
-                        alt8=21;}
-                }
-                else {
-                    alt8=21;}
-                break;
-            case 'X':
-                int LA8_28 = input.LA(3);
-                if ( (LA8_28=='E') ) {
-                    int LA8_37 = input.LA(4);
-                    if ( (LA8_37=='C') ) {
-                        int LA8_47 = input.LA(5);
-                        if ( (LA8_47=='U') ) {
-                            int LA8_57 = input.LA(6);
-                            if ( (LA8_57=='T') ) {
-                                int LA8_66 = input.LA(7);
-                                if ( (LA8_66=='E') ) {
-                                    int LA8_73 = input.LA(8);
-                                    if ( (LA8_73=='$'||LA8_73=='.'||(LA8_73>='0' && LA8_73<='9')||(LA8_73>='A' && LA8_73<='Z')||(LA8_73>='a' && LA8_73<='z')) ) {
-                                        alt8=21;
-                                    }
-                                    else {
-                                        alt8=13;}
-                                }
-                                else {
-                                    alt8=21;}
-                            }
-                            else {
-                                alt8=21;}
-                        }
-                        else {
-                            alt8=21;}
-                    }
-                    else {
-                        alt8=21;}
-                }
-                else {
-                    alt8=21;}
-                break;
-            default:
-                alt8=21;}
-
-            break;
-        case 'R':
-            int LA8_14 = input.LA(2);
-            if ( (LA8_14=='E') ) {
-                switch ( input.LA(3) ) {
-                case 'A':
-                    int LA8_38 = input.LA(4);
-                    if ( (LA8_38=='D') ) {
-                        int LA8_48 = input.LA(5);
-                        if ( (LA8_48=='$'||LA8_48=='.'||(LA8_48>='0' && LA8_48<='9')||(LA8_48>='A' && LA8_48<='Z')||(LA8_48>='a' && LA8_48<='z')) ) {
-                            alt8=21;
-                        }
-                        else {
-                            alt8=18;}
-                    }
-                    else {
-                        alt8=21;}
-                    break;
-                case 'V':
-                    int LA8_39 = input.LA(4);
-                    if ( (LA8_39=='E') ) {
-                        int LA8_49 = input.LA(5);
-                        if ( (LA8_49=='R') ) {
-                            int LA8_59 = input.LA(6);
-                            if ( (LA8_59=='S') ) {
-                                int LA8_67 = input.LA(7);
-                                if ( (LA8_67=='E') ) {
-                                    int LA8_74 = input.LA(8);
-                                    if ( (LA8_74=='$'||LA8_74=='.'||(LA8_74>='0' && LA8_74<='9')||(LA8_74>='A' && LA8_74<='Z')||(LA8_74>='a' && LA8_74<='z')) ) {
-                                        alt8=21;
-                                    }
-                                    else {
-                                        alt8=16;}
-                                }
-                                else {
-                                    alt8=21;}
-                            }
-                            else {
-                                alt8=21;}
-                        }
-                        else {
-                            alt8=21;}
-                    }
-                    else {
-                        alt8=21;}
-                    break;
-                default:
-                    alt8=21;}
-
-            }
-            else {
-                alt8=21;}
-            break;
-        case 'M':
-            int LA8_15 = input.LA(2);
-            if ( (LA8_15=='A') ) {
-                int LA8_30 = input.LA(3);
-                if ( (LA8_30=='C') ) {
-                    int LA8_40 = input.LA(4);
-                    if ( (LA8_40=='R') ) {
-                        int LA8_50 = input.LA(5);
-                        if ( (LA8_50=='O') ) {
-                            int LA8_60 = input.LA(6);
-                            if ( (LA8_60=='$'||LA8_60=='.'||(LA8_60>='0' && LA8_60<='9')||(LA8_60>='A' && LA8_60<='Z')||(LA8_60>='a' && LA8_60<='z')) ) {
-                                alt8=21;
-                            }
-                            else {
-                                alt8=19;}
-                        }
-                        else {
-                            alt8=21;}
-                    }
-                    else {
-                        alt8=21;}
-                }
-                else {
-                    alt8=21;}
-            }
-            else {
-                alt8=21;}
-            break;
-        case '\'':
-            alt8=20;
-            break;
-        case '$':
-        case '.':
-        case 'A':
-        case 'B':
-        case 'C':
-        case 'D':
-        case 'G':
-        case 'H':
-        case 'J':
-        case 'K':
-        case 'L':
-        case 'N':
-        case 'O':
-        case 'P':
-        case 'Q':
-        case 'T':
-        case 'U':
-        case 'V':
-        case 'W':
-        case 'X':
-        case 'Y':
-        case 'Z':
-        case 'a':
-        case 'b':
-        case 'c':
-        case 'd':
-        case 'e':
-        case 'f':
-        case 'g':
-        case 'h':
-        case 'i':
-        case 'j':
-        case 'k':
-        case 'l':
-        case 'm':
-        case 'n':
-        case 'o':
-        case 'p':
-        case 'q':
-        case 'r':
-        case 's':
-        case 't':
-        case 'u':
-        case 'v':
-        case 'w':
-        case 'x':
-        case 'y':
-        case 'z':
-            alt8=21;
-            break;
-        case '\"':
-            alt8=22;
-            break;
-        case '#':
-            alt8=23;
-            break;
-        case '\t':
-        case '\n':
-        case '\r':
-        case ' ':
-            alt8=24;
-            break;
-        case '%':
-            alt8=25;
-            break;
-        default:
-            NoViableAltException nvae =
-                new NoViableAltException("1:1: Tokens : ( T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | STRINGS | INTEGERS | FUNCTION | EXECUTE | SORT | ITERATE | REVERSE | ENTRY | READ | MACRO | QUOTED | IDENTIFIER | STRING | INTEGER | WS | LINE_COMMENT );", 8, 0, input);
-
-            throw nvae;
-        }
-
+        alt8 = dfa8.predict(input);
         switch (alt8) {
             case 1 :
-                // Bst.g:1:10: T25
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:10: T__25
                 {
-                mT25(); 
+                mT__25(); 
+
 
                 }
                 break;
             case 2 :
-                // Bst.g:1:14: T26
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:16: T__26
                 {
-                mT26(); 
+                mT__26(); 
+
 
                 }
                 break;
             case 3 :
-                // Bst.g:1:18: T27
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:22: T__27
                 {
-                mT27(); 
+                mT__27(); 
+
 
                 }
                 break;
             case 4 :
-                // Bst.g:1:22: T28
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:28: T__28
                 {
-                mT28(); 
+                mT__28(); 
+
 
                 }
                 break;
             case 5 :
-                // Bst.g:1:26: T29
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:34: T__29
                 {
-                mT29(); 
+                mT__29(); 
+
 
                 }
                 break;
             case 6 :
-                // Bst.g:1:30: T30
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:40: T__30
                 {
-                mT30(); 
+                mT__30(); 
+
 
                 }
                 break;
             case 7 :
-                // Bst.g:1:34: T31
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:46: T__31
                 {
-                mT31(); 
+                mT__31(); 
+
 
                 }
                 break;
             case 8 :
-                // Bst.g:1:38: T32
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:52: T__32
                 {
-                mT32(); 
+                mT__32(); 
+
 
                 }
                 break;
             case 9 :
-                // Bst.g:1:42: T33
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:58: T__33
                 {
-                mT33(); 
+                mT__33(); 
+
 
                 }
                 break;
             case 10 :
-                // Bst.g:1:46: STRINGS
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:64: STRINGS
                 {
                 mSTRINGS(); 
 
+
                 }
                 break;
             case 11 :
-                // Bst.g:1:54: INTEGERS
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:72: INTEGERS
                 {
                 mINTEGERS(); 
 
+
                 }
                 break;
             case 12 :
-                // Bst.g:1:63: FUNCTION
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:81: FUNCTION
                 {
                 mFUNCTION(); 
 
+
                 }
                 break;
             case 13 :
-                // Bst.g:1:72: EXECUTE
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:90: EXECUTE
                 {
                 mEXECUTE(); 
 
+
                 }
                 break;
             case 14 :
-                // Bst.g:1:80: SORT
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:98: SORT
                 {
                 mSORT(); 
 
+
                 }
                 break;
             case 15 :
-                // Bst.g:1:85: ITERATE
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:103: ITERATE
                 {
                 mITERATE(); 
 
+
                 }
                 break;
             case 16 :
-                // Bst.g:1:93: REVERSE
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:111: REVERSE
                 {
                 mREVERSE(); 
 
+
                 }
                 break;
             case 17 :
-                // Bst.g:1:101: ENTRY
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:119: ENTRY
                 {
                 mENTRY(); 
 
+
                 }
                 break;
             case 18 :
-                // Bst.g:1:107: READ
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:125: READ
                 {
                 mREAD(); 
 
+
                 }
                 break;
             case 19 :
-                // Bst.g:1:112: MACRO
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:130: MACRO
                 {
                 mMACRO(); 
 
+
                 }
                 break;
             case 20 :
-                // Bst.g:1:118: QUOTED
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:136: QUOTED
                 {
                 mQUOTED(); 
 
+
                 }
                 break;
             case 21 :
-                // Bst.g:1:125: IDENTIFIER
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:143: IDENTIFIER
                 {
                 mIDENTIFIER(); 
 
+
                 }
                 break;
             case 22 :
-                // Bst.g:1:136: STRING
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:154: STRING
                 {
                 mSTRING(); 
 
+
                 }
                 break;
             case 23 :
-                // Bst.g:1:143: INTEGER
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:161: INTEGER
                 {
                 mINTEGER(); 
 
+
                 }
                 break;
             case 24 :
-                // Bst.g:1:151: WS
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:169: WS
                 {
                 mWS(); 
 
+
                 }
                 break;
             case 25 :
-                // Bst.g:1:154: LINE_COMMENT
+                // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:1:172: LINE_COMMENT
                 {
                 mLINE_COMMENT(); 
 
+
                 }
                 break;
 
@@ -1674,6 +1102,167 @@ public class BstLexer extends Lexer {
     }
 
 
+    protected DFA8 dfa8 = new DFA8(this);
+    static final String DFA8_eotS =
+        "\12\uffff\6\21\6\uffff\24\21\1\64\6\21\1\73\2\21\1\uffff\4\21\1"+
+        "\102\1\21\1\uffff\1\104\5\21\1\uffff\1\21\1\uffff\1\113\1\21\1\115"+
+        "\1\21\1\117\1\120\1\uffff\1\121\1\uffff\1\122\4\uffff";
+    static final String DFA8_eofS =
+        "\123\uffff";
+    static final String DFA8_minS =
+        "\1\11\11\uffff\1\117\1\116\1\125\1\116\1\105\1\101\6\uffff\2\122"+
+        "\1\124\1\105\1\116\1\105\1\124\1\101\1\103\1\111\1\124\1\105\1\122"+
+        "\2\103\1\122\1\105\1\104\1\122\1\116\1\44\1\107\1\101\1\124\1\125"+
+        "\1\131\1\122\1\44\1\117\1\107\1\uffff\1\105\1\124\1\111\1\124\1"+
+        "\44\1\123\1\uffff\1\44\1\123\1\122\1\105\1\117\1\105\1\uffff\1\105"+
+        "\1\uffff\1\44\1\123\1\44\1\116\2\44\1\uffff\1\44\1\uffff\1\44\4"+
+        "\uffff";
+    static final String DFA8_maxS =
+        "\1\175\11\uffff\2\124\1\125\1\130\1\105\1\101\6\uffff\2\122\1\124"+
+        "\1\105\1\116\1\105\1\124\1\126\1\103\1\111\1\124\1\105\1\122\2\103"+
+        "\1\122\1\105\1\104\1\122\1\116\1\172\1\107\1\101\1\124\1\125\1\131"+
+        "\1\122\1\172\1\117\1\107\1\uffff\1\105\1\124\1\111\1\124\1\172\1"+
+        "\123\1\uffff\1\172\1\123\1\122\1\105\1\117\1\105\1\uffff\1\105\1"+
+        "\uffff\1\172\1\123\1\172\1\116\2\172\1\uffff\1\172\1\uffff\1\172"+
+        "\4\uffff";
+    static final String DFA8_acceptS =
+        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\6\uffff\1\24\1\25"+
+        "\1\26\1\27\1\30\1\31\36\uffff\1\16\6\uffff\1\22\6\uffff\1\21\1\uffff"+
+        "\1\23\6\uffff\1\12\1\uffff\1\17\1\uffff\1\15\1\20\1\13\1\14";
+    static final String DFA8_specialS =
+        "\123\uffff}>";
+    static final String[] DFA8_transitionS = {
+            "\2\24\25\uffff\1\24\1\uffff\1\22\1\23\1\21\1\25\1\uffff\1\20"+
+            "\2\uffff\1\1\1\2\1\uffff\1\3\1\21\13\uffff\1\4\1\uffff\1\5\1"+
+            "\6\1\7\2\uffff\4\21\1\15\1\14\2\21\1\13\3\21\1\17\4\21\1\16"+
+            "\1\12\7\21\6\uffff\32\21\1\10\1\uffff\1\11",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\27\4\uffff\1\26",
+            "\1\30\5\uffff\1\31",
+            "\1\32",
+            "\1\34\11\uffff\1\33",
+            "\1\35",
+            "\1\36",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",