Coder Social home page Coder Social logo

jabref / jabref Goto Github PK

View Code? Open in Web Editor NEW
3.4K 111.0 2.4K 274.26 MB

Graphical Java application for managing BibTeX and biblatex (.bib) databases

Home Page: https://devdocs.jabref.org

License: MIT License

Python 0.09% Java 90.83% TeX 6.93% ANTLR 0.04% Shell 0.09% Ruby 0.01% XSLT 1.42% CSS 0.52% Batchfile 0.01% PowerShell 0.02% Groovy 0.03% AppleScript 0.02%
jabref bibtex java latex biblatex bibliography academia reference-manager research-tool academic-publications

jabref's Introduction

JabRef Bibliography Management

JabRef is an open-source, cross-platform citation and reference management tool.

Stay on top of your literature: JabRef helps you to collect and organize sources, find the paper you need and discover the latest research.

main table

Features

JabRef is available free of charge and is actively developed. It supports you in every step of your research work.

Collect

  • Search across many online scientific catalogues like CiteSeer, CrossRef, Google Scholar, IEEEXplore, INSPIRE-HEP, Medline PubMed, MathSciNet, Springer, arXiv, and zbMATH
  • Import options for over 15 reference formats
  • Easily retrieve and link full-text articles
  • Fetch complete bibliographic information based on ISBN, DOI, PubMed-ID and arXiv-ID
  • Extract metadata from PDFs
  • Import new references directly from the browser with one click using the official browser extension for Firefox, Chrome, Edge, and Vivaldi

Organize

  • Group your research into hierarchical collections and organize research items based on keywords/tags, search terms, or your manual assignments
  • Advanced search and filter features
  • Complete and fix bibliographic data by comparing with curated online catalogs such as Google Scholar, Springer, or MathSciNet
  • Customizable citation key generator
  • Customize and add new metadata fields or reference types
  • Find and merge duplicates
  • Attach related documents: 20 different kinds of documents supported out of the box, completely customizable and extendable
  • Automatically rename and move associated documents according to customizable rules
  • Keep track of what you read: ranking, priority, printed, quality-assured

Cite

  • Native BibTeX and Biblatex support
  • Cite-as-you-write functionality for external applications such as Emacs, Kile, LyX, Texmaker, TeXstudio, Vim and WinEdt.
  • Format references using one of thousands of built-in citation styles or create your own style
  • Support for Word and LibreOffice/OpenOffice for inserting and formatting citations

Share

  • Many built-in export options or create your export format
  • Library is saved as a simple text file, and thus it is easy to share with others via Dropbox and is version-control friendly
  • Work in a team: sync the contents of your library via a SQL database

Installation

Fresh development builds are available at builds.jabref.org. The latest stable release is available at FossHub.

Please see our Installation Guide.

Bug Reports, Suggestions, Other Feedback

Donation PayPal Donate

We are thankful for any bug reports or other feedback. If you have ideas for new features you want to be included in JabRef, tell us in the feature section of our forum! If you need support in using JabRef, please read the documentation first, the frequently asked questions (FAQ) and also have a look at our community forum. You can use our GitHub issue tracker to file bug reports.

An explanation of donation possibilities and usage of donations is available at our donations page.

Contributing

dev-docs Help Contribute to Open Source Join the chat at https://gitter.im/JabRef/jabref OpenHub Deployment Status Test Status codecov.io

Want to be part of a free and open-source project that tens of thousands of scientists use every day? Check out the ways you can contribute, below:

We view pull requests as a collaborative process. Submit a pull request early to get feedback from the team on work in progress. We will discuss improvements with you and agree to merge them once the developers approve. Please also remember to discuss bigger changes early with the core developers to avoid a waste of time and work. Some fundamental design decisions can be found within our list of Architectural Decision Records.

If you want a step-by-step walk-through on how to set-up your workspace, please check this guideline.

To compile JabRef from source, you need a Java Development Kit 20 and JAVA_HOME pointing to this JDK. To run it, just execute gradlew run. When you want to develop, it is necessary to generate additional sources using gradlew generateSource and then generate the Eclipse gradlew eclipse. For IntelliJ IDEA, just import the project via a Gradle Import by pointing at the build.gradle.

gradlew test executes all tests. We use GitHub Actions for executing the tests after each commit. For developing, it is sufficient to locally only run the associated test for the classes you changed. Github will report any other failure.

Sponsoring

JabRef development is powered by YourKit Java Profiler
YourKit Java Profiler

jabref's People

Contributors

boceckts avatar braunch avatar btut avatar calixtus avatar chriba avatar davidemdot avatar dependabot-preview[bot] avatar dependabot[bot] avatar florian-beetz avatar hakova avatar houssemnasri avatar k3kaw8pnf7mkmdsmphz27 avatar koji33 avatar koppor avatar lenhard avatar linusdietz avatar luggas4you avatar lyzardking avatar mairdl avatar matthiasgeiger avatar mlep avatar mortenalver avatar obraliar avatar oscargus avatar papatekken avatar siedlerchr avatar simonharrer avatar stefan-kolb avatar tobiasdiez avatar zesaro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jabref's Issues

Integrate all maintained plugins into JabRef

The plugin system of JabRef used the Java Plug-in Framework, which is not state of the art anymore. The modern way is to use Jigsaw. However, offering a plugin interface requires the interfaces to be stable. This cannot be guaranteed. Issues such as korv/Jabref-plugins#13 or lehner/LocalCopy#6 will arise. We assume that plugin functionality directly integrated in the JabRef code will ensure that it will be maintained, we removed the plugin functionality.

We ask all plugin developers to fork JabRef, integrate the plugin functionality and create a pull request. Our CONTRIBUTING.md file provides details.

In the long run, all available plugins should be integrated in JabRef.

Allow custom ordering of fields in the edit panel

When customizing entry types, we can pick which fields should be proposed for various types, as well as the order in which they should appear. The order, however, does not survive closing and reopening JabRef.

Could there be an option to force JabRef not to reorder fields?

To reproduce this: in custom entry type/journal, move title up before journal. The edit panel for an article now shows the title field before the journal field. Quit and restart Jabref. The original order has been restored.

This issue was brought up here, but I don't think it has been dealt with.

My preferences got reset

While trying the newest development build, JabRef reset my preferences. Did this happen to anyone else?

Two options:

  • ignore
  • add hint to README.md that this might happen and if yes, the users should comment here. Then we can fix it with the subsequent beta version.

Upgraded to windows 10: Bibsonomy plug-in failure

I upgraded my OS from Windows 7 to Windows 10 recently, and the JabRef does not allow me to add new entries or even edit existing entries. Whenever I tried to add new entry or tried to edit an existing entries, there popped out an "error: added_entry". The error console told me the following. See if anyone knows how to fix it:

_Log_

Sep 09, 2015 9:54:23 AM net.sf.jabref.plugin.PluginCore initialize
INFO: Found 8 plugin(s):
  - adssearch (jar:file:/C:/Users/qxd/.jabref/plugins/ADSsearch-0.1.jar!/plugin.xml)
  - net.sf.jabref.core (jar:file:/E:/Applications/Study/JabRef/JabRef-2.10.jar!/plugins/net.sf.jabref.core/plugin.xml)
  - INSPIREfetcher (jar:file:/C:/Users/qxd/.jabref/plugins/INSPIREfetcher-0.3.jar!/plugin.xml)
  - adsfetcher (jar:file:/C:/Users/qxd/.jabref/plugins/ADSFetcher-0.4.jar!/plugin.xml)
  - arxivrss (jar:file:/C:/Users/qxd/.jabref/plugins/arxivrss-0.5.jar!/plugin.xml)
  - org.bibsonomy.plugin.jabref (jar:file:/C:/Users/qxd/.jabref/plugins/jabref-bibsonomy-plugin-2.5.2-bin.jar!/plugin.xml)
  - net.sf.jabrefprrvp (jar:file:/C:/Users/qxd/.jabref/plugins/net.sf.jabrefprrvp.jar!/plugin.xml)
  - net.sf.jabref.export.misq (jar:file:/E:/Applications/Study/JabRef/JabRef-2.10.jar!/plugins/net.sf.jabref.export.misq/plugin.xml)

Sep 09, 2015 9:54:25 AM net.sf.jabref.Globals logger
INFO: Opening: F:\References\Archive\Archive.bib
Sep 09, 2015 9:54:30 AM net.sf.jabref.Globals logger
INFO: Could not get key binding for "Open folder"
Sep 09, 2015 9:54:36 AM org.bibsonomy.rest.RestProperties getInstance
WARNING: unable to initialize jndi context
Sep 09, 2015 9:54:36 AM org.bibsonomy.rest.RestProperties getInstance
INFO: reading config file 'RestConfig.cfg' from classloader -> nowhere (not found)

_Output_

Found 8 plugin(s):
  - adssearch (jar:file:/C:/Users/qxd/.jabref/plugins/ADSsearch-0.1.jar!/plugin.xml)
  - net.sf.jabref.core (jar:file:/E:/Applications/Study/JabRef/JabRef-2.10.jar!/plugins/net.sf.jabref.core/plugin.xml)
  - INSPIREfetcher (jar:file:/C:/Users/qxd/.jabref/plugins/INSPIREfetcher-0.3.jar!/plugin.xml)
  - adsfetcher (jar:file:/C:/Users/qxd/.jabref/plugins/ADSFetcher-0.4.jar!/plugin.xml)
  - arxivrss (jar:file:/C:/Users/qxd/.jabref/plugins/arxivrss-0.5.jar!/plugin.xml)
  - org.bibsonomy.plugin.jabref (jar:file:/C:/Users/qxd/.jabref/plugins/jabref-bibsonomy-plugin-2.5.2-bin.jar!/plugin.xml)
  - net.sf.jabrefprrvp (jar:file:/C:/Users/qxd/.jabref/plugins/net.sf.jabrefprrvp.jar!/plugin.xml)
  - net.sf.jabref.export.misq (jar:file:/E:/Applications/Study/JabRef/JabRef-2.10.jar!/plugins/net.sf.jabref.export.misq/plugin.xml)

Opening: F:\References\Archive\Archive.bib
Could not get key binding for "Open folder"
unable to initialize jndi context
reading config file 'RestConfig.cfg' from classloader -> nowhere (not found)

_Exceptions_

Exception in thread "AWT-EventQueue-0" java.lang.NoSuchFieldError: ADDED_ENTRY
    at org.bibsonomy.plugin.jabref.listener.PluginDataBaseChangeListener.databaseChanged(PluginDataBaseChangeListener.java:57)
    at net.sf.jabref.BibtexDatabase.fireDatabaseChanged(BibtexDatabase.java:591)
    at net.sf.jabref.BibtexDatabase.insertEntry(BibtexDatabase.java:234)
    at net.sf.jabref.BasePanel.newEntry(BasePanel.java:1802)
    at net.sf.jabref.JabRefFrame$NewEntryAction.actionPerformed(JabRefFrame.java:1220)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$300(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
error setting key: java.lang.NoSuchFieldError: ADDED_ENTRY
error setting key: java.lang.NoSuchFieldError: ADDED_ENTRY
error setting key: java.lang.NoSuchFieldError: ADDED_ENTRY

Fix Localization warnings

There are severeal localization warning which should be remove before the release.

Especially if another language than English is used some warnings arise as already localized Strings are used as key to get the localization.

Unreadable Russian text in Windows installer

When I runs JabRef-2.10-setup.exe, downloaded from this site, there are two screens with unreadable text appears (I bound it with red line):

  1. Greeting screen
    screenshot1
  2. Components selection screen
    screenshot2

I Use Russian version of Windows 7 x64 SP1.

P.S. There is same issue in JabRef-2.11b3-setup.exe

Add support for CitationStyles

As user, I quickly want to copy and paste an entry rendered in a specified format. Either, because I want to paste a reference in a review, I work with Microsoft Word managing the references by hand, or I just quickly send around a reference to users not using BibTeX as serialization format. Currently, JabRef cannot be configured quickly to render Springer or IEEE styled entries: One has to use a combination of HTML and the formatters to get the desired result.

CitationStyles is the new way to offer rendering of bibliographic data. Currently JabRef offers following two possibilities to format BibTeX entries

I am aware that another options causes more trouble. Nevertheless, the available formats of CitationStyles is huge (over 7500) and we can't keep maintaining all of them in a JabRef / OpenOffice style variant.

Possibly, we drop JabRef's formatters? If we decide against support of CitationStyles, we should enable displaying/exporting references formatted by bibtex (and eventually biblatex). As far as I understood, JabRef offers a bibtex VM, which interprets bst files and generates text output. Meaning: We have a bibtex program implemented in Java, dont' we?

Background information

Change file header

Currently, JabRef adds following header to each BibTeX file

% This file was created with JabRef <version>
% Encoding: UTF8

If users use different versions of JabRef, this causes problems. Therefore, I propose to just remove the first header line.

I'm not sure about the second line. Should we guess the encoding from the file or keep the encoding information?

Other JabRef settings such as the group information or the save order is stored in BibTeX @comment entries. Maybe we should require the encoding also be stored as @comment? Possibly, this interferes with the parser and we have to first check existence of a encoding comment entry and then fire up the parser.

Localisation: wrong value displayed

When you translate an entry such as Marked_all_%0_selected_entries=, the position of the variable %0 can be altered (depending on the grammar rules of the targeted language).
For example, the %0 may come first, such as:
Marked_all_%0_selected_entries=%0_entrées_sélectionnées_étiquetées.
In this case, i.e. when %0 is placed just after the equal sign, the value displayed is always zero.
Note: even if it does not make sense, the localization
Marked_all_%0_selected_entries=entrées_%0_sélectionnées_étiquetées
displays the proper value.

It is something which should be modified in the java code or in the localization file?

Tested on current state of branch 2.11_dev

Move from sourceforge to github

This issue is for tracking the migration to github. In the long run, the complete infrastructure of JabRef should move from sourceforge to github. I would not expect the ticket to be closed before 2017.

Discussion points

  1. The discussion forum is quite active. Should we keep the discussion forum, should we get a disqus forum or should we just drop it?
  2. Deletion seems to be quite hard and destroys links. Should we just turn the source forge things read only
  3. What should we do with the mailing lists?

Dropping a PDF on an entry should be consistent

When one wants to attach a PDF to an entry and move the PDF to the local data base folder, this is only possible by dropping the PDF into the preview pane or the "File" field (in the tab "General"). Then, the dialog "link to file" (call it "link dialog") is shown. When one drops the PDF onto the entry in the table, another dialog ("Import Metadata from PDF", call it "import dialog") is shown.

The import dialog offers "only attach PDF", which is one option of the link dialog. Thus, the options offered at the import dialog are incomplete. Therefore, the options of the link dialog should be included in the import dialog, too.

File format importer

We got quite a lot of importers for various file formats.

See net.sf.jabref.importer.fileformat.*

  • Biblioscape
  • BibtexImporter
  • BibteXMLImporter
  • BiomailImporter (removed)
  • CopacImporter
  • CsaImporter (removed)
  • EndnoteImporter
  • FreeCiteImporter
  • InspecImporter
  • IsiImporter
  • JstorImporter (removed)
  • MedlineImporter
  • MedlinePlainImporter
  • MsBibImporter
  • OvidImporter
  • PdfContentImporter
  • PdfXmpImporter
  • RepecNepImporter
  • RisImporter
  • ScifinderImporter
  • SilverPlatterImporter
  • SixpackImporter
  1. Most of them are NOT tested.
  2. I don't know how many of them are relevant for users.

This is a nice package for students or anyone to work on. The same holds for any exporters & web fetchers we have.

Replace BibTexParser & Writer

The class BibtexParsershould be replaced or rewritten if possible. Currently, it is quite a mess. Also, it only does the parsing of the files and not the writing.

We need to investigate if we can replace it by some external library like jBibTex or need to rewrite it properly. The same probably holds for the writing process which should be aligned with the reading process.

Any information appreciated.

Consistent code formatting

I renabled the gradlew format task in commit f6267c0. Currently, this task destroys the LabelPatternUtil class. Furthermore, braces are not moved up. Maybe we should make the formatter more intrusive and enable @formatter:off/on tags for areas which are intended to be kept in separate lines.

Define optimal serialization format and variations (dropping or reviving the 2.9.2 format)

In JabRef 2.10, we introduced following new feature:

    Changed serialization of BibTeX entries:
        First, the required, then the optional and then all other fields are written.
        Thereby, fields are now ordered by name. Except the title, which is written first.
        The second word in of the BibTeX type is capitalized. E.g., Inproceedings got InProceedings
        Configurable: Start field contents in same column. Enabled by default.
        Configurable: Use camel case for field names (e.g., "HowPublished" instead of "howpublished"). Enabled by default.
        If no field name is given, then "UNKNOWN" is used. For instance, " = {X}" gets " UNKNOWN = {X}".

When a user collaborates with a person using an older version of JabRef, they cannot use version control properly as the serialization always changes. In version 2.11 beta 2, we offer a quick hack to go back to the old 2.9.2 behavior, which is somehow incomplete. See #10 (comment)

We can just focus on other issues and let time solve the issue or invest time to implement the old serialization again.

Related issue: #115

Request at sourceforge: https://sourceforge.net/p/jabref/feature-requests/864/

To track the progress of implementation, the consensus described below is added here.

Rationale: People are very emotional about formatting -> Modify as little as possible in the bib file

  • Unmodified entries will not be formatted and written back exactly as read in (including all formatting issues, etc.
  • Modifying any part of an entry results in a reformatting of the complete entry
  • No more global configuration forsorting of entries on load / save. (sorting information is now stored in the file)
  • New entries are added to the bottom of the file
  • Fixed and non-configurable format for new or modified entries. Dropping all field saving options (Preferences -> File -> Field saving options)
  • Fields are sorted as stated in the Bibtex / Biblatex manuals.
  • The = is appended directly to the field key. The value part is indented to one space past the longest field key name + = (so that all values are aligned).
  • Bibtex entry keys are written in camel case, starting upper case
  • Field keys are formatted in lower case only
  • No longer perform any changes of field content (no more space/tab/newline elimination, etc.)
  • Provide formatter (Example: Remove tabs / newlines / duplicate spaces) that can be enabled by a user for specific fields onLoad / onSave. These are not enabled by default.
  • If in doubt, do as biber does

Administrator priviledge problem with preferences

Sep 03, 2015 4:25:30 PM java.util.prefs.WindowsPreferences <init>
WARNUNG: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.

Haven't evaluated yet what consequences this has...

Extract libraries out of JabRef ("Toolkit") / Offer JabRef as library / jar / maven central

Bioclipse has used JabRef in the past for the BibTeX data model, and there has been talk for reusing JabRef in PathVisio too for working with biobliograph data... do you see any chance of splitting out a JabRef functionality library with core functionality (data model, look up of data based on DOI or PubMed ID, ...)?

Source message 32103878 from @egonw

Usage of "assert"?

In various classes I have seen the usage of the assert statement.
E.g., class net.sf.jabref.gui.BasePanel:

    public BasePanel(JabRefFrame frame, BibtexDatabase db, File file,
                     MetaData metaData, String encoding) {
        assert frame != null;
        assert db != null;
        //file may be null
        assert encoding != null;
        assert metaData != null;
 [...]
}

Is it planned to stick to use this assertion or should those assertions be replaced using Objects.requireNonNull(...)?

Location of JabRef backup files

Personally, I find it distracting to have the *.bak backup files inside my project folders.
As we discussed at our Brass-Meeting 🍺, we may move the location of these files to AppDataor any other temporary folder to keep the user directory clean.

Extract and unify all GUI actions

The question is how can we reduce the cluttering caused by those inline classes.

The class gui.action.ParseAction.java is a good example for proposing a possible solution.
The exact same behaviour is needed different classes.

Even with a controller-like class we will have some code duplication as one controller should not serve multiple views...

Localisation:

About Persian localization:

Persian files are currently in the directory https://github.com/JabRef/jabref/tree/master/src/main/resources/resource.
They should be in the directory https://github.com/JabRef/jabref/tree/master/src/main/resources/l10n.

About Chinese localization:

There was a recent update of 2 files in the master branch:
https://github.com/JabRef/jabref/blob/master/src/main/resources/l10n/JabRef_zh.properties
and
https://github.com/JabRef/jabref/blob/master/src/main/resources/l10n/Menu_zh.properties
Could this update could be "copied" to branch dev_2.11, so as to be included in the next beta release?

New UI

(This issue is closed as it won't be targeted within the next months and we want to have our issue tracker clean. It will be reopened if we really work on the new UI.)

This issue is used to collect requirements to the new UI. I will incorporate updates in this text. To keep the comment list small, I will delete the comment if it is included fully in this text.

If someone volunteers, I would suggest to draft a UI using Pencil.

General idea

  • Ribbon-based UI based on use cases: information collection, paper writing, making camera ready version

Different types of BibTeX files

See #160

Nicer table layout

sci suggests two have the journal title rendered in two lines similar to Mendeley.

Should also work at unusual setups

Implementation

  • It should be implemented using JavaFX.
  • For icons see #230.
  • Ensure that it works with both OpenJDK und OracleJDK.

search options

The naming and docs for search options are not clear and/or logical for me.

Currently broken on Mac OS X?

A SF.net user seems to have problems with a build based on the master branch (see here).

Should be definitely checked before the release of 2.80 and 2.11

Auto cleanups/ Sensible defaults

This issue should be a collection of things that should be auto monitored and corrected.
Some of the features can possibly be extracted from the existing CleanupAction.java.

The decisions are open for discussion 😃

AUTO

  • page ranges in the form num--num
  • convert 1st, 2nd to real superscrips
  • convert umlauts etc. to BibTex format
  • bibtex month format #month#

MANUAL

Improve Mac OS X building

Currently, our MacAdapter class depends on com.apple.*. These classes are not available on a Linux or Windows JDK. Our current solution is to include the legacy AppleJavaExtensions, which are not available on jCenter. Another option is to use the OrangeExtensions. However, we use com.apple.eawt.FullScreenUtilities, which is not available.

We should get support of FullScreenUtilities into the OrangeExtensions and switch to them to get rid of AppleJavaExtensions.jar in the source repository.

Refactor BibTeX file field

JabRef should be convenient for new users to use. When using the file field, the format for each file entry is description:link:type. Multiple values can be put in separated by ;. At each file, fields can be omitted. file = {desc} is a valid enry. Naively, I would have assumed that desc is the link. Furthermore type is a custom JabRef string, but Media Types are the accepted standard for providing types.

Therefore, I propose the new format link:description:media type.

Furthermore, I propose dropping support for the legacy fields pdf and ps. These fields were legacy from the end of 2007 on. Even though some users want to keep the old fields, I would vote for an intuitive handling of references to external files instead of clutter the UI with legacy things. (I currently can't find the email in the mailinglist where we discussed that :()

Discussion points

  • Is media type too over-engineered? Can we drop the type completely and derive the type by the file extension?
  • Are : and ; good separators?
  • Is file really more intuitive than separate pdf and ps links? Should we keep the pdf field?
  • Should the new field be called attachments to enable easy migration from the old format to the new one?

Next steps

I would propose a discussion at this issue and I'll update this text accordingly.

We should also remove "Tools -> Legacy Tools...".

More to read

GoogleUrlCleaner

Imho the benefits of GoogleUrlCleaner.java are not clear.

There is an extra action on rightclick context menu for cleaning Google URLs. I don't see why many of us will benefit from this feature, at least not in this way.

If we keep this action it should automatically be used when pasting a link and clean the link instantly.

The detection is flawed though, as we should only use this on URLs from Google domains.

IllegalArgumentException: Comparison method violates its general contract!

When pasting a DOI in any of the Bibtex entry fields.
DOI: 10.1007/11538394_20
Error:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Comparison method violates its general contract!
    at java.util.TimSort.mergeHi(TimSort.java:895)
    at java.util.TimSort.mergeAt(TimSort.java:512)
    at java.util.TimSort.mergeCollapse(TimSort.java:437)
    at java.util.TimSort.sort(TimSort.java:241)
    at java.util.Arrays.sort(Arrays.java:1438)
    at sun.awt.datatransfer.DataTransferer.setToSortedDataFlavorArray(DataTransferer.java:2410)
    at sun.awt.datatransfer.ClipboardTransferable.<init>(ClipboardTransferable.java:101)
    at sun.awt.datatransfer.SunClipboard.getContents(SunClipboard.java:144)
    at javax.swing.TransferHandler$TransferAction.actionPerformedImpl(TransferHandler.java:1755)
    at javax.swing.TransferHandler$TransferAction.access$800(TransferHandler.java:1692)
    at javax.swing.TransferHandler$TransferAction$1.run(TransferHandler.java:1715)
    at javax.swing.TransferHandler$TransferAction$1.run(TransferHandler.java:1713)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at javax.swing.TransferHandler$TransferAction$2.run(TransferHandler.java:1730)
    at javax.swing.TransferHandler$TransferAction$2.run(TransferHandler.java:1728)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at javax.swing.TransferHandler$TransferAction.actionPerformed(TransferHandler.java:1727)
    at javax.swing.text.JTextComponent.invokeAction(JTextComponent.java:1462)
    at javax.swing.text.JTextComponent.paste(JTextComponent.java:1440)
    at javax.swing.text.DefaultEditorKit$PasteAction.actionPerformed(DefaultEditorKit.java:1363)
    at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1663)
    at javax.swing.JComponent.processKeyBinding(JComponent.java:2882)
    at javax.swing.JComponent.processKeyBindings(JComponent.java:2929)
    at javax.swing.JComponent.processKeyEvent(JComponent.java:2845)
    at java.awt.Component.processEvent(Component.java:6302)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
    at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)
    at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)
    at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)
    at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)
    at java.awt.Component.dispatchEventImpl(Component.java:4752)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Consistent encoding strings

JabRef's current encoding list lists possible encodings.

The strings have flaws:

On the one hand, I am very well aware that a change here results in a large compatibility code where the old strings have to be mapped to the new strings. On the other hand, I would like to see JabRef having strings not causing confusion.

Related: #118, #131

can not compile new custom import filter

Hi, I have saved "SimpleCsvImporter.java" and “compileAll.bat” together into Jabref‘s install path, then run the bat, but no "SimpleCsvImporter.class" appearing.

Please help!

PS:I am using the newly jabref 2.11b3.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.