- Added new images and symbols downloading;
- Fixed user defined images path (now work for all images: cards, symbols, temp downloading);
- Fixed not working cancel button at download window (it close window, but tasks is working, download and didn't save);
- Fixed temp files trash all around images folder (on cancel button);
- Fixed not saving new downloaded cards on cancel button (zip file didn't close on cancel);
I used Intellij IDEA to automatically refactor code to achive 3 goals.
1) get rid of anonymouse classes, and replace the with lamba to get more readeable and clean code (like in TableWaitingDialog).
2) make effectively final variables actually final to avoid inadvertent changes on it in further releases and keep objects as immutable, as possible.
3) Get rid of unused imports (most of the changes) in whole project classes.
RotatedResizedImageCache and MultiRotatedResizedImageCache contain the caching
machinery.
A cache of rotated and resized images is added to ImageCache, and is used by
the resizing functions there.
All the resizing and rotation functions in ImageHelper are redirected to the
ones in ImageCache.
This is slightly inefficient because it will cache some calls that are never
repeated, but it prevents developers from mistakenly using uncached functions
when calls are repeated, seriously impacting performance.
Also resizing functions that only take a width or an height have been removed,
and their calls fixed to provide the other dimension. It's still possible to
specify -1 as width or height to ignore constraints in that dimension, though.
Greatly speeds up UI performance.
CardInfoPane.setCard() performs the tooltip resize, initially it's of
zero width and height. The resize happens in the EDT but location is
calculated in the thread pool's thread, i.e. before the first resize.
Because of that the first time the tooltip appears it may be partially
off-screen, nothing fatal but looks ugly. Now all calculations are moved
to EDT as well and they're guaranteed to happen after the resize.
which causes plugin loading to consistently fail, so switch back to
directly instantiating ThemePluginImpl()
this is a little unfortunate, because these plugins don't get the same
lifecycle handling as external ones
re: c25e45095e