diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 971a986..5f8ace8 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -11,6 +11,7 @@ on: pull_request: branches: - master + - develop - release/* jobs: diff --git a/.gitignore b/.gitignore index 6b498f2..0c988ed 100644 --- a/.gitignore +++ b/.gitignore @@ -153,4 +153,5 @@ gradle-app.setting ### ADDTIONAL ### src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/*.png -.idea \ No newline at end of file +.idea +.DS_Store \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eafde15..3a60f26 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,11 +1,10 @@ # Contributing Guidelines -Thank you for your interest in contributing to the Pokémon Progress Bar IntelliJ extension! Please read, understand, and -agree to the following before making your contribution. Please also ensure you have read and agreed to -the [Code of Conduct](CODE_OF_CONDUCT.md). +[![GitHub contributors](https://img.shields.io/github/contributors/kagof/intellij-pokemon-progress)](https://github.com/kagof/intellij-pokemon-progress/graphs/contributors) -If you have any issues or questions, please, do not hesitate to contact [the maintainer](https://github.com/kagof) of -this plugin. +Thank you for your interest in contributing to the Pokémon Progress Bar IntelliJ extension! Please read, understand, and agree to the following before making your contribution. Please also ensure you have read and agreed to the [Code of Conduct](CODE_OF_CONDUCT.md). + +If you have any issues or questions, please, do not hesitate to contact [the maintainer](https://github.com/kagof) of this plugin. ## Workflow @@ -48,8 +47,7 @@ release branch merged to master ## Bug Reports -Please make sure all bug reports have not already been reported or fixed, and come with a clear description of the -situation, effect, expected experience, and, if at all possible, steps to reproduce the bug. +Please make sure all bug reports have not already been reported or fixed, and come with a clear description of the situation, effect, expected experience, and, if at all possible, steps to reproduce the bug. ## Feature Requests @@ -57,32 +55,21 @@ Please make sure all feature requests are clear, concise, feasible, useful, and ## Pull Requests -Pull requests for bugs or features are encouraged, but please open an issue first and ensure it has been discussed & -approved. Your code will be reviewed as soon as possible; please be willing to accept feedback & and change your pull -request as needed. +We encourage pull requests for bugs or features, but please open an issue first and ensure it has been discussed & approved by the maintainer before beginning work. Your code will be reviewed as soon as possible; please be willing to accept feedback and change your pull request as needed. -Also ensure that the extension still runs properly after your changes, by using the built in extension debugger in -IntelliJ. +Also ensure that the extension still runs properly after your changes, by using the built in extension debugger in IntelliJ. -Ideally, we'd like to work with a branch-per-issue policy, as well as a one-commit-per-issue policy. Feel free to make a -separate commit when addressing code review comments, or to amend your existing commit. If new commits are made, they -may be squashed into the original before merging. +Ideally, we'd like to work with a branch-per-issue policy, as well as a one-commit-per-issue policy. Feel free to make a separate commit when addressing code review comments, or to amend your existing commit. If new commits are made, the maintainer may squash them into the original before merging. -Preferably you should be using [signed commits](https://help.github.com/en/articles/signing-commits), although this is -not required. +Preferably you should be using [signed commits](https://help.github.com/en/articles/signing-commits), although this is not required. ### Additional PR Information * This plugin is written using Java 11 and the IntelliJ SDK. -* Please also do your best to follow the existing code style. You may be asked to refactor your code if it does not - match the existing style, in the interest of consistency. -* please branch off of [develop](https://github.com/kagof/intellij-pokemon-progress/tree/develop), and open pull - requests to that branch as well +* Please also do your best to follow the existing code style. You may be asked to refactor your code if it does not match the existing style, in the interest of consistency. +* please branch off of [develop](https://github.com/kagof/intellij-pokemon-progress/tree/develop), and open pull requests to that branch as well, unless doing an "urgent" bugfix (to be decided by the maintainer), in which case PRs should be based off of [master](https://github.com/kagof/intellij-pokemon-progress/tree/master). * if adding a new Pokémon: - * please maintain numerical ordering in the [Readme](README.md) - , [plugin.xml](src/main/resources/META-INF/plugin.xml), - and [Pokemon.java](src/main/java/com/kagof/intellij/plugins/pokeprogress/Pokemon.java) + * please maintain numerical ordering in the [Readme](README.md), [plugin.xml](src/main/resources/META-INF/plugin.xml), and [Pokemon.java](src/main/java/com/kagof/intellij/plugins/pokeprogress/Pokemon.java) * [editSprite.sh](editSprite.sh) can be used to generate the required gifs from existing png images - * [DocumentGenerator.java](src/test/java/com/kagof/intellij/plugins/pokeprogress/DocumentationGenerator.java) can be - used to generate the new lines in plugin.xml and README.md - * `Pokemon::DEBUG` and `Pokemon::TARGET` are very useful when tweaking sprite positioning & sizing \ No newline at end of file + * [DocumentGenerator.java](src/test/java/com/kagof/intellij/plugins/pokeprogress/DocumentationGenerator.java) can be used to generate the new lines in plugin.xml and README.md + * [TestProgressBar.java](src/test/java/com/kagof/intellij/plugins/pokeprogress/TestProgressBar.java)) is very useful when tweaking sprite positioning & sizing (Thanks to @Paola351 for the initial implementation of this!) \ No newline at end of file diff --git a/README.md b/README.md index ce4c064..70d00e3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # IntelliJ Pokémon Progress Bar + [![Build](https://img.shields.io/github/workflow/status/kagof/intellij-pokemon-progress/Java%20CI%20with%20Gradle/master)](https://gist.github.com/kagof/63edd71468e771dcde77ff87f251f8a3) [![Version](https://img.shields.io/jetbrains/plugin/v/15090-pokemon-progress)](https://plugins.jetbrains.com/plugin/15090-pokemon-progress/versions) [![Rating](https://img.shields.io/jetbrains/plugin/r/rating/15090-pokemon-progress)](https://plugins.jetbrains.com/plugin/15090-pokemon-progress/reviews) @@ -6,33 +7,36 @@ ![](eg/example.gif) -This is [a plugin](https://plugins.jetbrains.com/plugin/15090-pokemon-progress/versions) for [JetBrains IntelliJ IDEA](https://www.jetbrains.com/idea/), which replaces your progress bars with a (random) Pokémon. The color of the progress bar fill is based on that Pokémon's type(s). +This is [a plugin](https://plugins.jetbrains.com/plugin/15090-pokemon-progress/versions) for [JetBrains IntelliJ IDEA](https://www.jetbrains.com/idea/) (And other compatible IDEs), which replaces your progress bars with a (random) Pokémon. The color of the progress bar fill is based on that Pokémon's type(s). ## Included Pokémon ### Generation I -* ![Bulbasaur (#1)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/bulbasaur.gif) Bulbasaur (#1) ![Bulbasaur (#1)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/bulbasaur_r.gif) -* ![Venusaur (#3)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/venusaur.gif) Venusaur (#3) ![Venusaur (#3)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/venusaur_r.gif) -* ![Charmander (#4)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/charmander.gif) Charmander (#4) ![Charmander (#4)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/charmander_r.gif) -* ![Charizard (#6)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/charizard.gif) Charizard (#6) ![Charizard (#6)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/charizard_r.gif) -* ![Squirtle (#7)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/squirtle.gif) Squirtle (#7) ![Squirtle (#7)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/squirtle_r.gif) -* ![Blastoise (#9)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/blastoise.gif) Blastoise (#9) ![Blastoise (#9)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/blastoise_r.gif) -* ![Butterfree (#12)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/butterfree.gif) Butterfree (#12) ![Butterfree (#12)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/butterfree_r.gif) -* ![Pikachu (#25)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/pikachu.gif) Pikachu (#25) ![Pikachu (#25)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/pikachu_r.gif) -* ![Nidoqueen (#31)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/nidoqueen.gif) Nidoqueen (#31) ![Nidoqueen (#31)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/nidoqueen_r.gif) -* ![Nidoking (#34)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/nidoking.gif) Nidoking (#34) ![Nidoking (#34)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/nidoking_r.gif) -* ![Jigglypuff (#39)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jigglypuff.gif) Jigglypuff (#39) ![Jigglypuff (#39)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jigglypuff_r.gif) -* ![Meowth (#52)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/meowth.gif) Meowth (#52) ![Meowth (#52)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/meowth_r.gif) -* ![Alakazam (#65)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/alakazam.gif) Alakazam (#65) ![Alakazam (#65)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/alakazam_r.gif) -* ![Machamp (#68)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/machamp.gif) Machamp (#68) ![Machamp (#68)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/machamp_r.gif) -* ![Slowpoke (#79)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/slowpoke.gif) Slowpoke (#79) ![Slowpoke (#79)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/slowpoke_r.gif) -* ![Magnemite (#81)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/magnemite.gif) Magnemite (#81) ![Magnemite (#81)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/magnemite_r.gif) -* ![Gengar (#94)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/gengar.gif) Gengar (#94) ![Gengar (#94)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/gengar_r.gif) +* ![Bulbasaur (#001)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/bulbasaur.gif) Bulbasaur (#001) ![Bulbasaur (#001)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/bulbasaur_r.gif) +* ![Venusaur (#003)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/venusaur.gif) Venusaur (#003) ![Venusaur (#003)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/venusaur_r.gif) +* ![Charmander (#004)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/charmander.gif) Charmander (#004) ![Charmander (#004)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/charmander_r.gif) +* ![Charizard (#006)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/charizard.gif) Charizard (#006) ![Charizard (#006)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/charizard_r.gif) +* ![Squirtle (#007)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/squirtle.gif) Squirtle (#007) ![Squirtle (#007)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/squirtle_r.gif) +* ![Blastoise (#009)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/blastoise.gif) Blastoise (#009) ![Blastoise (#009)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/blastoise_r.gif) +* ![Butterfree (#012)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/butterfree.gif) Butterfree (#012) ![Butterfree (#012)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/butterfree_r.gif) +* ![Pikachu (#025)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/pikachu.gif) Pikachu (#025) ![Pikachu (#025)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/pikachu_r.gif) +* ![Nidoqueen (#031)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/nidoqueen.gif) Nidoqueen (#031) ![Nidoqueen (#031)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/nidoqueen_r.gif) +* ![Nidoking (#034)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/nidoking.gif) Nidoking (#034) ![Nidoking (#034)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/nidoking_r.gif) +* ![Jigglypuff (#039)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jigglypuff.gif) Jigglypuff (#039) ![Jigglypuff (#039)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jigglypuff_r.gif) +* ![Meowth (#052)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/meowth.gif) Meowth (#052) ![Meowth (#052)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/meowth_r.gif) +* ![Alakazam (#065)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/alakazam.gif) Alakazam (#065) ![Alakazam (#065)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/alakazam_r.gif) +* ![Machamp (#068)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/machamp.gif) Machamp (#068) ![Machamp (#068)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/machamp_r.gif) +* ![Slowpoke (#079)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/slowpoke.gif) Slowpoke (#079) ![Slowpoke (#079)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/slowpoke_r.gif) +* ![Magnemite (#081)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/magnemite.gif) Magnemite (#081) ![Magnemite (#081)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/magnemite_r.gif) +* ![Gengar (#094)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/gengar.gif) Gengar (#094) ![Gengar (#094)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/gengar_r.gif) * ![Koffing (#109)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/koffing.gif) Koffing (#109) ![Koffing (#109)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/koffing_r.gif) * ![Scyther (#123)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/scyther.gif) Scyther (#123) ![Scyther (#123)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/scyther_r.gif) * ![Gyarados (#130)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/gyarados.gif) Gyarados (#130) ![Gyarados (#130)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/gyarados_r.gif) * ![Eevee (#133)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/eevee.gif) Eevee (#133) ![Eevee (#133)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/eevee_r.gif) +* ![Vaporeon (#134)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon.gif) Vaporeon (#134) ![Vaporeon (#134)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon_r.gif) +* ![Jolteon (#135)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon.gif) Jolteon (#135) ![Jolteon (#135)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon_r.gif) +* ![Flareon (#136)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon.gif) Flareon (#136) ![Flareon (#136)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon_r.gif) * ![Snorlax (#143)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/snorlax.gif) Snorlax (#143) ![Snorlax (#143)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/snorlax_r.gif) * ![Articuno (#144)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/articuno.gif) Articuno (#144) ![Articuno (#144)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/articuno_r.gif) * ![Zapdos (#145)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/zapdos.gif) Zapdos (#145) ![Zapdos (#145)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/zapdos_r.gif) @@ -50,12 +54,40 @@ This is [a plugin](https://plugins.jetbrains.com/plugin/15090-pokemon-progress/v * ![Totodile (#158)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/totodile.gif) Totodile (#158) ![Totodile (#158)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/totodile_r.gif) * ![Feraligatr (#160)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/feraligatr.gif) Feraligatr (#160) ![Feraligatr (#160)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/feraligatr_r.gif) * ![Togepi (#175)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/togepi.gif) Togepi (#175) ![Togepi (#175)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/togepi_r.gif) +* ![Espeon (#196)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon.gif) Espeon (#196) ![Espeon (#196)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon_r.gif) +* ![Umbreon (#197)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon.gif) Umbreon (#197) ![Umbreon (#197)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon_r.gif) * ![Wobbuffet (#202)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/wobbuffet.gif) Wobbuffet (#202) ![Wobbuffet (#202)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/wobbuffet_r.gif) +* ![Raikou (#243)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou.gif) Raikou (#243) ![Raikou (#243)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou_r.gif) +* ![Entei (#244)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei.gif) Entei (#244) ![Entei (#244)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei_r.gif) +* ![Suicune (#245)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune.gif) Suicune (#245) ![Suicune (#245)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune_r.gif) +* ![Lugia (#249)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia.gif) Lugia (#249) ![Lugia (#249)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia_r.gif) +* ![Ho-Oh (#250)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh.gif) Ho-Oh (#250) ![Ho-Oh (#250)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh_r.gif) +* ![Celebi (#251)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi.gif) Celebi (#251) ![Celebi (#251)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi_r.gif) ### Generation III * ![Wailmer (#320)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/wailmer.gif) Wailmer (#320) ![Wailmer (#320)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/wailmer_r.gif) * ![Wailord (#321)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/wailord.gif) Wailord (#321) ![Wailord (#321)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/wailord_r.gif) +* ![Kyogre (#382)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre.gif) Kyogre (#382) ![Kyogre (#382)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre_r.gif) +* ![Groudon (#383)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon.gif) Groudon (#383) ![Groudon (#383)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon_r.gif) +* ![Rayquaza (#384)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza.gif) Rayquaza (#384) ![Rayquaza (#384)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza_r.gif) +* ![Jirachi (#385)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi.gif) Jirachi (#385) ![Jirachi (#385)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi_r.gif) +* ![Deoxys (#386)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys.gif) Deoxys (#386) ![Deoxys (#386)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys_r.gif) + +### Generation IV + +* ![Turtwig (#387)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig.gif) Turtwig (#387) ![Turtwig (#387)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig_r.gif) +* ![Torterra (#389)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra.gif) Torterra (#389) ![Torterra (#389)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra_r.gif) +* ![Chimchar (#390)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar.gif) Chimchar (#390) ![Chimchar (#390)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar_r.gif) +* ![Infernape (#392)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape.gif) Infernape (#392) ![Infernape (#392)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape_r.gif) +* ![Piplup (#393)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup.gif) Piplup (#393) ![Piplup (#393)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup_r.gif) +* ![Empoleon (#395)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon.gif) Empoleon (#395) ![Empoleon (#395)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon_r.gif) +* ![Leafeon (#470)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon.gif) Leafeon (#470) ![Leafeon (#470)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon_r.gif) +* ![Glaceon (#471)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon.gif) Glaceon (#471) ![Glaceon (#471)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon_r.gif) + +### Generation VI + +* ![Sylveon (#700)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon.gif) Sylveon (#700) ![Sylveon (#700)](src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon_r.gif) ### Generation VII @@ -82,19 +114,20 @@ Contributions are very welcome on this project! Please see our [contributing gui ### Sprites * [Pokencyclopedia SpriteDex - Heart Gold & Soul Silver](https://www.pokencyclopedia.info/en/index.php?id=sprites/overworlds/o-r_hgss) - * Bulbasaur, Venusaur, Charmander, Charizard, Squirtle, Blastoise, Butterfree, Pikachu, Nidoqueen, Nidoking, Jigglypuff, Meowth, Alakazam, Machamp, Slowpoke, Magnemite, Gengar, Koffing, Scyther, Gyarados, Eevee, Snorlax, Articuno, Zapdos, Moltres, Dragonite, Mewtwo, Mew - * Chikorita, Meganium, Cyndaquil, Typhlosion, Totodile, Feraligatr, Togepi, Wobbuffet - * Wailmer, Wailord + * All Gen I-IV sprites unless otherwise noted * MissingNo. +* [JuJoAura on DeviantArt](https://www.deviantart.com/jujoaura/art/Sylveon-Full-Sprite-379989482) + * Sylveon * [Bulbagarden Archives](https://archives.bulbagarden.net) * Mimikyu (first frame) * [SageDeoxys](https://www.pokecommunity.com/showthread.php?t=429414) - * Grookey, Rillaboom, Scorbunny, Cinderace, Sobble, Intelleon, Wooloo, Zacian, Zamazenta + * All Gen VIII sprites unless otherwise noted ### Code * The code for the progress bar itself was adapted from [Nyan Progess Bar](https://github.com/batya239/NyanProgressBar). -* This plugin is of course heavily dependent on JetBrains' IntelliJ SDK +* This plugin is of course heavily dependent on JetBrains' IntelliJ SDK +* All the [contributors](https://github.com/kagof/intellij-pokemon-progress/graphs/contributors) who've helped build this plugin ### Misc diff --git a/build.gradle.kts b/build.gradle.kts index c157964..cc1ed20 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } group = "com.kagof" -version = "1.2.2" +version = "1.3.0" repositories { mavenCentral() @@ -26,58 +26,8 @@ tasks.getByName("publishPlugin") { tasks.getByName("patchPluginXml") { untilBuild(null) - changeNotes(""" - - """) + File("changenotes.html").let { + if (it.exists() && it.isFile && it.canRead()) changeNotes(it.readText()) + else throw IllegalStateException("unable to read changenotes.html") + } } \ No newline at end of file diff --git a/changenotes.html b/changenotes.html new file mode 100644 index 0000000..641f387 --- /dev/null +++ b/changenotes.html @@ -0,0 +1,68 @@ + \ No newline at end of file diff --git a/src/main/java/com/kagof/intellij/plugins/pokeprogress/Generation.java b/src/main/java/com/kagof/intellij/plugins/pokeprogress/Generation.java new file mode 100644 index 0000000..316fd63 --- /dev/null +++ b/src/main/java/com/kagof/intellij/plugins/pokeprogress/Generation.java @@ -0,0 +1,35 @@ +package com.kagof.intellij.plugins.pokeprogress; + +public enum Generation { + I(1), + II(152), + III(252), + IV(387), + V(494), + VI(650), + VII(722), + VIII(810); + + private final int start; + + Generation(final int start) { + this.start = start; + } + + public static Generation getGeneration(final int number) { + Generation gen = I; + if (number <= 0) { + return gen; + } + for (int i = 0; i < Generation.values().length; ++i) { + gen = Generation.values()[i]; + if (i == Generation.values().length - 1) { + break; + } + if (gen.start <= number && Generation.values()[i + 1].start > number) { + break; + } + } + return gen; + } +} diff --git a/src/main/java/com/kagof/intellij/plugins/pokeprogress/Pokemon.java b/src/main/java/com/kagof/intellij/plugins/pokeprogress/Pokemon.java index 7ef1207..8fe1b4d 100644 --- a/src/main/java/com/kagof/intellij/plugins/pokeprogress/Pokemon.java +++ b/src/main/java/com/kagof/intellij/plugins/pokeprogress/Pokemon.java @@ -32,6 +32,9 @@ public enum Pokemon { SCYTHER(123, "scyther", -17, -9, PokemonType.BUG, PokemonType.FLYING), GYARADOS(130, "gyarados", -16, -7, PokemonType.WATER, PokemonType.FLYING), EEVEE(133, "eevee", -16, -11, PokemonType.NORMAL), + VAPOREON(134, "vaporeon", -18, -11, PokemonType.WATER), + JOLTEON(135, "jolteon", -16, -11, PokemonType.ELECTRIC), + FLAREON(136, "flareon", -18, -11, PokemonType.FIRE), SNORLAX(143, "snorlax", -16, -7, PokemonType.NORMAL), ARTICUNO(144, "articuno", -18, -7, PokemonType.ICE, PokemonType.FLYING), ZAPDOS(145, "zapdos", -16, -7, PokemonType.ELECTRIC, PokemonType.FLYING), @@ -47,10 +50,35 @@ public enum Pokemon { TOTODILE(158, "totodile", -16, -11, PokemonType.WATER), FERALIGATR(160, "feraligatr", -16, -7, PokemonType.WATER), TOGEPI(175, "togepi", -16, -11, PokemonType.FAIRY), + ESPEON(196, "espeon", -16, -10, PokemonType.PSYCHIC), + UMBREON(197, "umbreon", -16, -10, PokemonType.DARK), WOBBUFFET(202, "wobbuffet", -16, -10, PokemonType.PSYCHIC), + RAIKOU(243, "raikou", -17, -10, PokemonType.ELECTRIC), + ENTEI(244, "entei", -17, -10, PokemonType.FIRE), + SUICUNE(245, "suicune", -19, -10, PokemonType.WATER), + LUGIA(249, "lugia", -19, -10, PokemonType.PSYCHIC, PokemonType.FLYING), + HO_OH(250, "ho-Oh", -18, -10, PokemonType.FIRE, PokemonType.FLYING), + CELEBI(251, "celebi", -16, -10, PokemonType.PSYCHIC, PokemonType.GRASS), // Gen III WAILMER(320, "wailmer", -16, -9, PokemonType.WATER), WAILORD(321, "wailord", -35, -35, PokemonType.WATER), + KYOGRE(382, "kyogre", -16, -5, PokemonType.WATER), + GROUDON(383, "groudon", -18, -12, PokemonType.GROUND), + RAYQUAZA(384, "rayquaza", -21, -12, PokemonType.DRAGON, PokemonType.FLYING), + JIRACHI(385, "jirachi", -14, -10, PokemonType.STEEL, PokemonType.PSYCHIC), + DEOXYS(386, "deoxys", -16, -7, PokemonType.PSYCHIC), + // Gen IV + TURTWIG(387, "turtwig", -16, -11, PokemonType.GRASS), + TORTERRA(389, "torterra", -14, -8, PokemonType.GRASS, PokemonType.GROUND), + CHIMCHAR(390, "chimchar", -16, -11, PokemonType.FIRE), + INFERNAPE(392, "infernape", -18, -7, PokemonType.FIRE, PokemonType.FIGHTING), + PIPLUP(393, "piplup", -16, -11, PokemonType.WATER), + EMPOLEON(395, "empoleon", -17, -8, PokemonType.WATER, PokemonType.STEEL), + LEAFEON(470, "leafeon", -18, -11, PokemonType.GRASS), + GLACEON(471, "glaceon", -18, -11, PokemonType.ICE), + // Gen V + // Gen VI + SYLVEON(700, "sylveon", -18, -8, PokemonType.FAIRY), // Gen VII MIMIKYU(778, "mimikyu", -21, -7, PokemonType.GHOST, PokemonType.FAIRY), // Gen VIII @@ -65,34 +93,35 @@ public enum Pokemon { ZAMAZENTA(889, "zamazenta", -7, -7, PokemonType.FIGHTING, PokemonType.STEEL), // Secret - MISSINGNO("???", "missingNo.", -16, -7, true, PokemonType.NORMAL); + MISSINGNO(-1, "missingNo.", -16, -7, true, PokemonType.NORMAL); - // For convenience's sake, these can be used when testing positioning & sizing of new sprites + // Historically used for testing, however will soon be removed, as TestProgressBar.java is much more useful static final boolean DEBUGGING = false; static final Pokemon TARGET = null; public static final Map DEFAULT_POKEMON = Arrays.stream(values()) .filter(p -> !p.secret) - .collect(ImmutableMap.toImmutableMap(Pokemon::getNumber, Function.identity())); + .collect(ImmutableMap.toImmutableMap(Pokemon::getNumberString, Function.identity())); private final List types; private final String name; - private final String number; + private final int number; private final int xShift; private final int yShift; private final boolean secret; + private final Generation generation; public static Pokemon getByNumber(final String number) { return DEFAULT_POKEMON.get(number); } Pokemon(final int number, final String name, final int xShift, final int yShift, final PokemonType... types) { - this(String.format("%03d", number), name, xShift, yShift, false, types); + this(number, name, xShift, yShift, false, types); } - Pokemon(final String number, final String name, final int xShift, final int yShift, final boolean secret, final PokemonType... types) { + Pokemon(final int number, final String name, final int xShift, final int yShift, final boolean secret, final PokemonType... types) { if (types == null || types.length < 1) { throw new IllegalArgumentException("configuration for " + name + " invalid"); } @@ -104,6 +133,7 @@ public static Pokemon getByNumber(final String number) { this.number = number; this.secret = secret; + generation = Generation.getGeneration(number); } public List getTypes() { @@ -118,19 +148,33 @@ public int getYShift() { return yShift; } + public boolean isSecret() { + return secret; + } + + public Generation getGeneration() { + return generation; + } + public String getName() { return name; } - public String getNumber() { + public int getNumber() { return number; } - public boolean isSecret() { - return secret; + public String getNumberString() { + return number > 0 ? String.format("%03d", number) : "???"; } public String getNameWithNumber() { - return StringUtil.capitalizeWords(name, true) + " (#" + number + ")"; + return StringUtil.capitalizeWords(name, true) + " (#" + getNumberString() + ")"; } + + @Override + public String toString() { + return getNameWithNumber(); + } + } diff --git a/src/main/java/com/kagof/intellij/plugins/pokeprogress/PokemonProgressBarUi.java b/src/main/java/com/kagof/intellij/plugins/pokeprogress/PokemonProgressBarUi.java index 4b23385..da87fe3 100644 --- a/src/main/java/com/kagof/intellij/plugins/pokeprogress/PokemonProgressBarUi.java +++ b/src/main/java/com/kagof/intellij/plugins/pokeprogress/PokemonProgressBarUi.java @@ -37,6 +37,8 @@ public class PokemonProgressBarUi extends BasicProgressBarUI { private static final float ONE_HALF = 0.5f; private final Pokemon pokemon; + private final Icon iconForward; + private final Icon iconReversed; private volatile int pos = 0; private volatile int velocity = 1; @@ -44,6 +46,8 @@ public class PokemonProgressBarUi extends BasicProgressBarUI { public PokemonProgressBarUi(final Pokemon pokemon) { super(); this.pokemon = pokemon; + iconForward = PokemonResourceLoader.getIcon(pokemon); + iconReversed = PokemonResourceLoader.getReversedIcon(pokemon); } @SuppressWarnings( {"MethodOverridesStaticMethodOfSuperclass", "UnusedDeclaration"}) @@ -190,7 +194,7 @@ private void drawPokemonIcon(final int amountFull, final Graphics2D graphics2D, final Shape previousClip = graphics2D.getClip(); graphics2D.setClip(clip); - final Icon icon = velocity >= 0 ? PokemonResourceLoader.getIcon(pokemon) : PokemonResourceLoader.getReversedIcon(pokemon); + final Icon icon = velocity >= 0 ? iconForward : iconReversed; icon.paintIcon(progressBar, graphics2D, amountFull + (velocity >= 0 ? JBUI.scale(pokemon.getXShift()) diff --git a/src/main/java/com/kagof/intellij/plugins/pokeprogress/PokemonResourceLoader.java b/src/main/java/com/kagof/intellij/plugins/pokeprogress/PokemonResourceLoader.java index a4c67b3..871ebf8 100644 --- a/src/main/java/com/kagof/intellij/plugins/pokeprogress/PokemonResourceLoader.java +++ b/src/main/java/com/kagof/intellij/plugins/pokeprogress/PokemonResourceLoader.java @@ -30,8 +30,11 @@ public static Icon getReversedIcon(final Pokemon pokemon) { private static Icon getIconInternal(final String resourceName) { try { - return cache.get(resourceName, () -> Optional.ofNullable(PokemonResourceLoader.class.getClassLoader() - .getResource(resourceName)) + return cache.get(resourceName, () -> Optional.ofNullable(Optional + .ofNullable(PokemonResourceLoader.class.getClassLoader() + .getResource(resourceName)) + .orElseGet(() -> PokemonResourceLoader.class.getClassLoader() + .getResource(resourceName.replaceFirst("/", "")))) .map(ImageIcon::new) .orElseGet(ImageIcon::new)); } catch (final ExecutionException e) { diff --git a/src/main/java/com/kagof/intellij/plugins/pokeprogress/configuration/PokemonProgressConfigurationComponent.java b/src/main/java/com/kagof/intellij/plugins/pokeprogress/configuration/PokemonProgressConfigurationComponent.java index 557c036..cb9d631 100644 --- a/src/main/java/com/kagof/intellij/plugins/pokeprogress/configuration/PokemonProgressConfigurationComponent.java +++ b/src/main/java/com/kagof/intellij/plugins/pokeprogress/configuration/PokemonProgressConfigurationComponent.java @@ -2,9 +2,11 @@ import java.awt.event.ActionEvent; import java.awt.event.ItemEvent; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; import java.util.stream.Collectors; import javax.swing.JButton; @@ -14,6 +16,7 @@ import com.intellij.ui.components.JBCheckBox; import com.intellij.ui.roots.ScalableIconComponent; import com.intellij.util.ui.FormBuilder; +import com.kagof.intellij.plugins.pokeprogress.Generation; import com.kagof.intellij.plugins.pokeprogress.Pokemon; import com.kagof.intellij.plugins.pokeprogress.PokemonResourceLoader; @@ -54,7 +57,15 @@ void createUi() { } }); + final Map gens = Arrays.stream(Generation.values()).collect(Collectors.toMap(Function.identity(), __ -> false)); + Pokemon.DEFAULT_POKEMON.values().stream().sorted().forEach(pokemon -> { + final Generation gen = pokemon.getGeneration(); + if (!gens.get(gen)) { + final JLabel genLabel = new JLabel("Generation " + gen); + formBuilder.addComponent(genLabel); + gens.put(gen, true); + } final JBCheckBox checkBox = new JBCheckBox(pokemon.getNameWithNumber(), true); checkBox.addItemListener(c -> { if (c.getStateChange() == ItemEvent.SELECTED) { @@ -65,7 +76,7 @@ void createUi() { refreshSelectAllButtons(); }); formBuilder.addLabeledComponent(new ScalableIconComponent(PokemonResourceLoader.getIcon(pokemon)), checkBox); - checkboxes.put(pokemon.getNumber(), checkBox); + checkboxes.put(pokemon.getNumberString(), checkBox); numSelected.incrementAndGet(); }); refreshSelectAllButtons(); diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 81cec30..0b0b28a 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -9,11 +9,15 @@


-
-
-
-
- +
+
+
+
+
+
+
+ +

See the Github Repository ]]> diff --git a/src/main/resources/META-INF/pluginIcon.svg b/src/main/resources/META-INF/pluginIcon.svg index 4881cae..5b34d02 100644 --- a/src/main/resources/META-INF/pluginIcon.svg +++ b/src/main/resources/META-INF/pluginIcon.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi.gif new file mode 100644 index 0000000..559394b Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi@2x.gif new file mode 100644 index 0000000..3264e6d Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi_r.gif new file mode 100644 index 0000000..7f1fdcb Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi_r@2x.gif new file mode 100644 index 0000000..760ad9d Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/celebi_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar.gif new file mode 100644 index 0000000..5766184 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar@2x.gif new file mode 100644 index 0000000..2456385 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar_r.gif new file mode 100644 index 0000000..72bc3eb Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar_r@2x.gif new file mode 100644 index 0000000..981ad4b Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/chimchar_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys.gif new file mode 100644 index 0000000..33983fa Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys@2x.gif new file mode 100644 index 0000000..d81f714 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys_r.gif new file mode 100644 index 0000000..ad368fd Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys_r@2x.gif new file mode 100644 index 0000000..09c63b7 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/deoxys_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon.gif new file mode 100644 index 0000000..9e561bc Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon@2x.gif new file mode 100644 index 0000000..b0b103e Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon_r.gif new file mode 100644 index 0000000..b255d39 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon_r@2x.gif new file mode 100644 index 0000000..5d26731 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/empoleon_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei.gif new file mode 100644 index 0000000..192fa16 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei@2x.gif new file mode 100644 index 0000000..e361aed Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei_r.gif new file mode 100644 index 0000000..8c7e1c6 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei_r@2x.gif new file mode 100644 index 0000000..1532736 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/entei_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon.gif new file mode 100644 index 0000000..747da6b Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon@2x.gif new file mode 100644 index 0000000..a9853d0 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon_r.gif new file mode 100644 index 0000000..8eb9536 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon_r@2x.gif new file mode 100644 index 0000000..a00d256 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/espeon_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon.gif new file mode 100644 index 0000000..443202c Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon@2x.gif new file mode 100644 index 0000000..1d12b7e Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon_r.gif new file mode 100644 index 0000000..ac2235a Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon_r@2x.gif new file mode 100644 index 0000000..bdafc98 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/flareon_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon.gif new file mode 100644 index 0000000..b1eabee Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon@2x.gif new file mode 100644 index 0000000..b697b9d Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon_r.gif new file mode 100644 index 0000000..e06a47e Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon_r@2x.gif new file mode 100644 index 0000000..e550ab0 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/glaceon_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon.gif new file mode 100644 index 0000000..2982c30 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon@2x.gif new file mode 100644 index 0000000..1a82775 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon_r.gif new file mode 100644 index 0000000..d990358 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon_r@2x.gif new file mode 100644 index 0000000..122ded8 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/groudon_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh.gif new file mode 100644 index 0000000..aaf7909 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh@2x.gif new file mode 100644 index 0000000..a66d297 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh_r.gif new file mode 100644 index 0000000..c3143fe Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh_r@2x.gif new file mode 100644 index 0000000..8a286da Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/ho-Oh_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape.gif new file mode 100644 index 0000000..10038c0 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape@2x.gif new file mode 100644 index 0000000..f8cd93b Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape_r.gif new file mode 100644 index 0000000..c460a69 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape_r@2x.gif new file mode 100644 index 0000000..9b16956 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/infernape_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi.gif new file mode 100644 index 0000000..ec2ab65 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi@2x.gif new file mode 100644 index 0000000..bd0bf6d Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi_r.gif new file mode 100644 index 0000000..0dbbbed Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi_r@2x.gif new file mode 100644 index 0000000..d7cfc4c Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jirachi_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon.gif new file mode 100644 index 0000000..bd07057 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon@2x.gif new file mode 100644 index 0000000..00768fa Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon_r.gif new file mode 100644 index 0000000..c4ebea2 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon_r@2x.gif new file mode 100644 index 0000000..fa589cc Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/jolteon_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre.gif new file mode 100644 index 0000000..bb34f56 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre@2x.gif new file mode 100644 index 0000000..02fcbc8 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre_r.gif new file mode 100644 index 0000000..a4fa060 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre_r@2x.gif new file mode 100644 index 0000000..a5eb776 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/kyogre_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon.gif new file mode 100644 index 0000000..8212b6a Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon@2x.gif new file mode 100644 index 0000000..5a43dfa Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon_r.gif new file mode 100644 index 0000000..0e55c33 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon_r@2x.gif new file mode 100644 index 0000000..3e3bec1 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/leafeon_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia.gif new file mode 100644 index 0000000..b72d888 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia@2x.gif new file mode 100644 index 0000000..5fe735f Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia_r.gif new file mode 100644 index 0000000..fe86d0b Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia_r@2x.gif new file mode 100644 index 0000000..b13d55e Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/lugia_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/mew@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/mew@2x.gif index 85cd39c..65c1b16 100644 Binary files a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/mew@2x.gif and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/mew@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/mew_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/mew_r@2x.gif index 0a12f70..2b2b902 100644 Binary files a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/mew_r@2x.gif and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/mew_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup.gif new file mode 100644 index 0000000..313513f Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup@2x.gif new file mode 100644 index 0000000..2488e1e Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup_r.gif new file mode 100644 index 0000000..06a5adf Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup_r@2x.gif new file mode 100644 index 0000000..00874cf Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/piplup_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou.gif new file mode 100644 index 0000000..c6a5f22 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou@2x.gif new file mode 100644 index 0000000..ebb0a6a Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou_r.gif new file mode 100644 index 0000000..0746966 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou_r@2x.gif new file mode 100644 index 0000000..f76ed4d Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/raikou_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza.gif new file mode 100644 index 0000000..acc8e6e Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza@2x.gif new file mode 100644 index 0000000..288e745 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza_r.gif new file mode 100644 index 0000000..6398610 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza_r@2x.gif new file mode 100644 index 0000000..2b3508e Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/rayquaza_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune.gif new file mode 100644 index 0000000..bfb3502 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune@2x.gif new file mode 100644 index 0000000..370d635 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune_r.gif new file mode 100644 index 0000000..66b3d88 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune_r@2x.gif new file mode 100644 index 0000000..6b99d76 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/suicune_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon.gif new file mode 100644 index 0000000..3816623 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon@2x.gif new file mode 100644 index 0000000..5a00efb Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon_r.gif new file mode 100644 index 0000000..3e09b3d Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon_r@2x.gif new file mode 100644 index 0000000..9025fa8 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/sylveon_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra.gif new file mode 100644 index 0000000..5cff801 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra@2x.gif new file mode 100644 index 0000000..755bc77 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra_r.gif new file mode 100644 index 0000000..6f5e05e Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra_r@2x.gif new file mode 100644 index 0000000..d69b2ba Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/torterra_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig.gif new file mode 100644 index 0000000..a8e1661 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig@2x.gif new file mode 100644 index 0000000..8cc4fa3 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig_r.gif new file mode 100644 index 0000000..3d16dc2 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig_r@2x.gif new file mode 100644 index 0000000..17ad588 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/turtwig_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon.gif new file mode 100644 index 0000000..4bf7cb2 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon@2x.gif new file mode 100644 index 0000000..0510c1a Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon_r.gif new file mode 100644 index 0000000..ad6a3b4 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon_r@2x.gif new file mode 100644 index 0000000..7d432ff Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/umbreon_r@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon.gif new file mode 100644 index 0000000..cdc8ec1 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon@2x.gif new file mode 100644 index 0000000..1df0ae1 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon@2x.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon_r.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon_r.gif new file mode 100644 index 0000000..79a033d Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon_r.gif differ diff --git a/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon_r@2x.gif b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon_r@2x.gif new file mode 100644 index 0000000..bfa4ef2 Binary files /dev/null and b/src/main/resources/com/kagof/intellij/plugins/pokeprogress/sprites/vaporeon_r@2x.gif differ diff --git a/src/test/java/com/kagof/intellij/plugins/pokeprogress/DocumentationGenerator.java b/src/test/java/com/kagof/intellij/plugins/pokeprogress/DocumentationGenerator.java index 240c00d..e95e8dd 100644 --- a/src/test/java/com/kagof/intellij/plugins/pokeprogress/DocumentationGenerator.java +++ b/src/test/java/com/kagof/intellij/plugins/pokeprogress/DocumentationGenerator.java @@ -1,5 +1,10 @@ package com.kagof.intellij.plugins.pokeprogress; +import java.util.Arrays; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + import org.junit.Ignore; import org.junit.Test; @@ -8,11 +13,20 @@ public class DocumentationGenerator { @Test public void printForReadme() { + final Map gens = Arrays.stream(Generation.values()).collect(Collectors.toMap(Function.identity(), __ -> false)); for (final Pokemon pokemon : Pokemon.values()) { + final Generation generation = pokemon.getGeneration(); + if (!gens.get(generation)) { + System.out.println(); + System.out.println("### Generation " + generation); + System.out.println(); + gens.put(generation, true); + } if (!pokemon.isSecret()) { System.out.println(getReadmeString(pokemon)); } } + System.out.println(); } @Test diff --git a/src/test/java/com/kagof/intellij/plugins/pokeprogress/TestProgressBar.java b/src/test/java/com/kagof/intellij/plugins/pokeprogress/TestProgressBar.java new file mode 100644 index 0000000..6d58bab --- /dev/null +++ b/src/test/java/com/kagof/intellij/plugins/pokeprogress/TestProgressBar.java @@ -0,0 +1,224 @@ +package com.kagof.intellij.plugins.pokeprogress; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.lang.reflect.Field; +import java.util.Objects; +import java.util.Optional; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JProgressBar; +import javax.swing.SwingUtilities; +import javax.swing.WindowConstants; + +import com.intellij.ide.ui.laf.darcula.ui.DarculaTextBorder; +import com.intellij.mock.MockApplication; +import com.intellij.openapi.Disposable; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.options.ConfigurationException; +import com.intellij.openapi.ui.ComboBox; +import com.intellij.openapi.ui.LabeledComponent; +import com.intellij.openapi.util.IconLoader; +import com.intellij.ui.components.fields.IntegerField; +import com.intellij.util.ReflectionUtil; +import com.kagof.intellij.plugins.pokeprogress.configuration.PokemonProgressState; + +public class TestProgressBar { + private static final int MAX_SHIFT_VALUE = 900; + + private JFrame frame; + private IntegerField xShift; + private IntegerField yShift; + private JProgressBar progressBar; + + private Pokemon selectedPokemon; + private int originalXShift = 0; + private int originalYShift = 0; + + @SuppressWarnings("FieldCanBeLocal") + private final Pokemon target = null; + + @SuppressWarnings("ConstantConditions") + public TestProgressBar() { + setUpMockApplication(); + updateSelectedPokemon(Optional.ofNullable(target).orElseGet(PokemonPicker::get)); + initializeFrame(); + addShutdownHook(); + } + + private void setUpMockApplication() { + final PokemonProgressState state = new PokemonProgressState(); + state.drawSprites = true; + state.addToolTips = false; + final Disposable parent = () -> { /*do nothing*/ }; + final MockApplication application = MockApplication.setUp(parent); + application.registerService(PokemonProgressState.class, state); + ApplicationManager.setApplication(application, parent); + IconLoader.activate(); + } + + private void initializeFrame() { + final JPanel contentPanel = createContentPanel(); + frame = new JFrame(); + frame.setTitle("Pokémon ProgressBar TestUI"); + frame.setContentPane(contentPanel); + frame.setSize(contentPanel.getPreferredSize()); + frame.setResizable(false); + frame.setVisible(true); + frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + frame.pack(); + } + + private JPanel createContentPanel() { + final JPanel contentPanel = new JPanel(); + contentPanel.setPreferredSize(new Dimension(400, 200)); + contentPanel.setLayout(new GridLayout(4, 1)); + + contentPanel.add(createPokemonComboBox()); + contentPanel.add(createProgressBar()); + contentPanel.add(createShiftPanel()); + contentPanel.add(createButtonPanel()); + + return contentPanel; + } + + @SuppressWarnings("unchecked") + private ComboBox createPokemonComboBox() { + final ComboBox pokemonComboBox = new ComboBox<>(Pokemon.values()); + pokemonComboBox.setSelectedItem(selectedPokemon); + pokemonComboBox.addActionListener(e -> { + printIfShiftUpdated(); + updateSelectedPokemon(Objects.requireNonNull((Pokemon) ((ComboBox) e.getSource()).getSelectedItem())); + resetShifts(); + updatePositionAndUI(e); + }); + return pokemonComboBox; + } + + private JProgressBar createProgressBar() { + progressBar = new JProgressBar(); + progressBar.setUI(new PokemonProgressBarUi(selectedPokemon)); + progressBar.setMinimum(0); + progressBar.setMaximum(2); + progressBar.setValue(1); + return progressBar; + } + + private JPanel createShiftPanel() { + final JPanel shiftPanel = new JPanel(); + shiftPanel.setLayout(new GridLayout(1, 2)); + xShift = createIntegerFieldTextBox("xShift"); + yShift = createIntegerFieldTextBox("yShift"); + + shiftPanel.add(LabeledComponent.create(xShift, "X shift", BorderLayout.NORTH)); + shiftPanel.add(LabeledComponent.create(yShift, "Y shift", BorderLayout.NORTH)); + resetShifts(); + return shiftPanel; + } + + private IntegerField createIntegerFieldTextBox(final String valueName) { + final IntegerField shiftField = new IntegerField(valueName, -MAX_SHIFT_VALUE, MAX_SHIFT_VALUE); + shiftField.setBorder(new DarculaTextBorder()); + shiftField.addActionListener(this::updatePositionAndUI); + return shiftField; + } + + private JPanel createButtonPanel() { + final JPanel buttonPanel = new JPanel(); + buttonPanel.setLayout(new GridLayout(1, 2)); + + final JButton updateButton = new JButton("Update"); + updateButton.addActionListener(this::updatePositionAndUI); + + final JButton resetButton = new JButton("Reset"); + resetButton.addActionListener(e -> { + resetShifts(); + updatePositionAndUI(e); + }); + + buttonPanel.add(updateButton); + buttonPanel.add(resetButton); + + return buttonPanel; + } + + private void addShutdownHook() { + Runtime.getRuntime().addShutdownHook(new Thread() { + @Override + public void run() { + printIfShiftUpdated(); + super.run(); + } + }); + } + + private void updateSelectedPokemon(final Pokemon newPokemon) { + if (selectedPokemon != null) { + setSelectedPokemonIntField("xShift", originalXShift); + setSelectedPokemonIntField("yShift", originalYShift); + } + selectedPokemon = newPokemon; + originalXShift = newPokemon.getXShift(); + originalYShift = newPokemon.getYShift(); + } + + private void resetShifts() { + xShift.setValue(originalXShift); + yShift.setValue(originalYShift); + xShift.setDefaultValue(originalXShift); + yShift.setDefaultValue(originalYShift); + } + + private void updatePositionAndUI(final ActionEvent e) { + if (e.getID() == ActionEvent.ACTION_PERFORMED) { + handleShiftChange(xShift); + handleShiftChange(yShift); + IconLoader.clearCache(); + progressBar.setUI(new PokemonProgressBarUi(selectedPokemon)); + frame.repaint(); + } + } + + private void handleShiftChange(final IntegerField field) { + try { + field.validateContent(); + } catch (final ConfigurationException ex) { + field.setToolTipText(ex.getMessage()); + return; + } + field.setToolTipText(null); + setSelectedPokemonIntField(field.getValueName(), field.getValue()); + } + + private void setSelectedPokemonIntField(final String name, final int amount) { + try { + final Field field = ReflectionUtil.findField(Pokemon.class, Integer.TYPE, name); + if ((int) field.get(selectedPokemon) != amount) { + field.setAccessible(true); + field.setInt(selectedPokemon, amount); + field.setAccessible(false); + } + } catch (final NoSuchFieldException | IllegalAccessException e) { + throw new RuntimeException(e); + } + } + + private void printIfShiftUpdated() { + if (shiftUpdated()) { + System.out.printf("%nUpdated shift for %s: %d, %d%n", selectedPokemon.getNameWithNumber(), xShift.getValue(), yShift.getValue()); + } + } + + private boolean shiftUpdated() { + return !Objects.equals(originalXShift, selectedPokemon.getXShift()) + || !Objects.equals(originalYShift, selectedPokemon.getYShift()); + } + + public static void main(final String[] args) { + SwingUtilities.invokeLater(TestProgressBar::new); + } +}