diff --git a/CHANGELOG.md b/CHANGELOG.md index af108fdc..46cf81a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ FlatLaf Change Log ## Unreleased +#### New features + +- Extras: `FlatSVGIcon` now allows specifying `ClassLoader` that is used to load + SVG file. (issue #163) + #### Other Changes - Extras: Updated dependency diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java index 93945555..a963c6a9 100644 --- a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java +++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java @@ -50,11 +50,18 @@ public class FlatSVGIcon private static final SVGUniverse svgUniverse = new SVGUniverse(); private final String name; + private final ClassLoader classLoader; + private SVGDiagram diagram; private boolean dark; public FlatSVGIcon( String name ) { + this( name, null ); + } + + public FlatSVGIcon( String name, ClassLoader classLoader ) { this.name = name; + this.classLoader = classLoader; } private void update() { @@ -79,7 +86,14 @@ public class FlatSVGIcon int dotIndex = name.lastIndexOf( '.' ); name = name.substring( 0, dotIndex ) + "_dark" + name.substring( dotIndex ); } - return FlatSVGIcon.class.getClassLoader().getResource( name ); + + ClassLoader cl = (classLoader != null) ? classLoader : FlatSVGIcon.class.getClassLoader(); + return cl.getResource( name ); + } + + public boolean hasFound() { + update(); + return diagram != null; } @Override