<div align="center">

# Banana Editor

<img src="src/main/resources/graphics/logo.svg"  width="160" height="130">

Probably tastes better than any Apple editor and NetBeans combined.

</div>

---

## TODO:

- [x] ~~Tabs~~
- [x] Modeline w/ linenumbers
- [x] Syntax highlighting
- [x] Filetree
- [x] Line numbers
- [x] Shortcuts
- [x] Change languages
- [x] Toggle line comment
- [x] Soft wrap
- [x] Darkmode/Lightmode or color themes
- [x] Add icons for files/folders in filetree
- [x] Add [code coverage check](https://docs.gitlab.com/ee/user/project/merge_requests/test_coverage_visualization.html) to verify quality of unit tests
- [ ] ~~Search~~
- [ ] ~~And replace~~

## Credits/Sources

- [james-d/SimpleMVP](https://github.com/james-d/SimpleMVP/tree/master/src/examples/mvp) -> Demonstration of JavaFX Model/View/Controller application
- [FXMisc/RichTextFX](https://github.com/FXMisc/RichTextFX) -> Library for handling rich text and line numbers
- [richtextfx-demos](https://github.com/FXMisc/RichTextFX/blob/master/richtextfx-demos/README.md) -> Examples and demos of how to use RichTextFX, including [Java Keywords Demo](https://github.com/FXMisc/RichTextFX/blob/master/richtextfx-demos/src/main/java/org/fxmisc/richtext/demo/JavaKeywordsAsyncDemo.java)
- [Pixabay/311788](https://pixabay.com/vectors/bananas-fruits-pair-yellow-bananas-311788/) -> Banana logo
- [Guava Event Bus](https://github.com/google/guava/wiki/EventBusExplained) -> Library for handling communication between controllers
- [JFX Moderna](https://github.com/openjdk/jfx/blob/master/modules/javafx.controls/src/main/resources/com/sun/javafx/scene/control/skin/modena/modena.css) -> CSS reference
<!---
- [devicons/devicon](https://github.com/devicons/devicon) -> Icon languages
  -->
- [icons8](https://icons8.com/) -> Filetree and language icons.
- [StackOverflow/38278601](https://stackoverflow.com/questions/38278601/javafx-treeview-directory-listing) ->
  Example of how to generate and show a filetree recursively.
- [Youtube/ProgrammingKnowledge](https://www.youtube.com/watch?v=RY_Rb2UVQKQ) -> Introduction to the fundamentals
  to create a filetree.
- [GenuineCoder](https://www.genuinecoder.com/save-files-javafx-filechooser/) -> Examples of how to use FileChooser
  and setting extensionfilters. Also included a nice method to save files.
- [Tutorialspoint](https://www.tutorialspoint.com/how-to-save-files-using-a-file-chooser-in-javafx) -> Example
  of how to use the openSaveDialog with FileChooser.
- [mkyoung](https://mkyong.com/java/how-to-create-directory-in-java/) -> Example of how to create a directory/folder.
- [Youtube/Cool IT Help](https://www.youtube.com/watch?v=gnXRI3pHxrU&t=727s) -> Showing how to cast (Stage). Example of how FXML, listener/event and DirectyChooser nicely can cooperate.
- [Code Makery](https://code.makery.ch/blog/javafx-dialogs-official/) -> Examples of many different javafx dialogs.
- [Oracle](https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#button) -> How to use JOption.
