JabRef / jabref

Graphical Java application for managing BibTeX and biblatex (.bib) databases
https://devdocs.jabref.org
MIT License
3.58k stars 2.51k forks source link

Convert/rework rest of the Swing Dialogs to javafx #3861

Closed Siedlerchr closed 5 years ago

Siedlerchr commented 6 years ago

This issue serves as point to see which dialogs need to be migrated and which need to be converted: @JabRef/developers please have a look at that list and see if I maybe missed some Some of the dialogs are very easy to convert and could be nice beginner tasks

Still need to be converted to MVVM (not a beginner task):

LinusDietz commented 6 years ago

This is an excellent opportunity for new developers to make a relatively easy first contribution.

jssander commented 6 years ago

Perhaps I could start by working on Quality -> Find unlinked files. Could you provide me with a little more information on what exactly needs to be done? Anything that would be of help.

tobiasdiez commented 6 years ago

Good to hear @jssander! The general aim is to convert these dialogs to the "new" UI technology JavaFX while at the same time improving the user experience/work flow. Do you already have experience with JavaFX? I think the "Find unlinked files" dialog is a good first project. The dialog is not too complex and reasonable well designed. Thus you can convert it more or less identically to JavaFX (Personally, I would move the "Select all/none" buttons below the file tree and remove the "expand/collapse" buttons. Maybe use an accordion-like design to emphasize the 2-step structure of the dialog, see eg here or here). For code examples, have a look at the dialogs "Options > Manage journal abbreviations" or "Key bindings". And, of course, feel free to ask questions here or in gitter.

gsweetwood commented 6 years ago

Hey @tobiasdiez, I am new to this project but I'm learning JavaFX now and will start converting the dialogs. I will also take a look at the placement of the buttons that you mentioned.

tobiasdiez commented 6 years ago

@gsweetwood Nice to hear that you are interested in contributing to JabRef! Since @jssander expressed interest in converting the "Find unlinked files" dialog and he already has some experience with the code of this dialog, it is probably best to leave this conversion to him (if you have not yet started).

But you are lucky and there are still a few others dialogs that needs attention. As a good start, I would recommend the three dialogs under "Edit" (with the "Manage keywords" being the most complicated of those).

gsweetwood commented 6 years ago

Great, thanks for the recommendation. I'll start there.

gsweetwood commented 6 years ago

Hey @tobiasdiez, I noticed that the examples you gave ("Options > Manage journal abbreviations") have controller, view, and view model classes. I'm working on Edit-> Set/Clear/Append Rename Fields, which is currently handled with just one class. Do you want me to create the classes like the example or to just modify the existing class?

tobiasdiez commented 6 years ago

@gsweetwood Yes, please use the new separation in view and view model (often called MVVM pattern). More details can be found in our wiki: https://github.com/JabRef/jabref/wiki/Code---JavaFX. In practice, you can still reuse most of the logic (as part of the view model class) but often need to rewrite most of the view/controller.

(And please base your code on the maintable-beta branch, there we made some major changes also to the structure - mainly merging the controller and the view). Thanks!

abepolk commented 5 years ago

@tobiasdiez @Siedlerchr I hope this is a good place to post! I am starting to rework the custom exporter dialog into JavaFX, and I am starting by making the table. I looked at the manage journal abbreviations table (in MVVM) to see how to create and populate a table in JavaFX. But I can’t seem to find where the tables are populated. I know lines 85-91 in src/main/java/org/jabref/gui/journals/ManageJournalAbbreviationView.java are related to populating the tables. Are the abbreviations coming from the preferences? Is the population being done in ManageJournalAbbreviationViewModel.java? Is this similar to how it needs to be done in the custom exporter dialog? Help is appreciated. Thanks!

Abe

Siedlerchr commented 5 years ago

@NorwayMaple Have a look at my open office PR, https://github.com/JabRef/jabref/pull/4341/files#diff-4317bc1b0fd381bbd7695f882fbdd323R32 For a table you need an extra viewModel, the data model, which represents the data you want to show in the table.

You then would create an Observable list with the data model objects and expose that property and bind it to the tablle https://github.com/JabRef/jabref/pull/4341/files#diff-906a555088c9123a621c81200d2a05edR38

ProgrammingBanana commented 5 years ago

Hello this would be the first contribution I make to an open source project. Is there something you'd suggest I do? Im also starting working with JavaFx but have a pretty good understanding of Java

Siedlerchr commented 5 years ago

Hey, thanks for your interest. You could transform the manage protected terms dialog to JavaFX. You can create the layout with scene builder (the fxml). For some general information about dialogs with javafx have a look at our wiki. The easiest way is to look at existing javafx dialogs. Feel free to ask any questions, either in your PR then or in our gitter chat.

Siedlerchr commented 5 years ago

We have gone a long way and now the final last dialog to convert is Push to application the settings. This would be a great way to implement the proposal in https://github.com/JabRef/jabref/issues/674

4719 however, is an extra issue as it depends on the new layout of the entry editor

LinusDietz commented 5 years ago

I have created a PR with some architecture tests to display, where Swing is still used. https://github.com/JabRef/jabref/pull/4894