diff --git a/src/main/java/envoy/client/ui/IconUtil.java b/src/main/java/envoy/client/ui/IconUtil.java index 4591f51..5324619 100644 --- a/src/main/java/envoy/client/ui/IconUtil.java +++ b/src/main/java/envoy/client/ui/IconUtil.java @@ -25,81 +25,72 @@ public class IconUtil { private IconUtil() {} /** - * Loads an icon from the resource folder. + * Loads an image from the resource folder. * * @param path the path to the icon inside the resource folder - * @return the icon + * @return the loaded image * @since Envoy Client v0.1-beta */ public static Image load(String path) { - Image image; + Image image = null; try { image = new Image(IconUtil.class.getResource(path).toExternalForm()); } catch (final NullPointerException e) { EnvoyLog.getLogger(IconUtil.class).log(Level.WARNING, String.format("Could not load image at path %s: ", path), e); - throw e; } return image; } /** - * Loads an icon from the resource folder and scales it to a given size. + * Loads an image from the resource folder and scales it to the given size. * * @param path the path to the icon inside the resource folder * @param size the size to scale the icon to - * @return the scaled icon + * @return the scaled image * @since Envoy Client v0.1-beta */ public static Image load(String path, int size) { - Image image; + Image image = null; try { image = new Image(IconUtil.class.getResource(path).toExternalForm(), size, size, true, true); } catch (final NullPointerException e) { EnvoyLog.getLogger(IconUtil.class).log(Level.WARNING, String.format("Could not load image at path %s: ", path), e); - throw e; } return image; } /** - * Loads a {@code .png} icon from the sub-folder {@code /icons/} of the resource - * folder and scales it to 16px.
+ * Loads a {@code .png} image from the sub-folder {@code /icons/} of the + * resource folder.
* The suffix {@code .png} is automatically appended. * * @param name the image name without the .png suffix * @return the loaded image * @since Envoy Client v0.1-beta - * @apiNote let's take a sample image {@code abc.png} in the folder - * {@code /icons/}. - *
- * To do that, we only have to call - * {@code IconUtil.loadIcon("abc")} + * @apiNote let's load a sample image {@code /icons/abc.png}.
+ * To do that, we only have to call {@code IconUtil.loadIcon("abc")} */ public static Image loadIcon(String name) { return load("/icons/" + name + ".png"); } /** - * Loads a {@code .png} icon from the sub-folder {@code /icons/} of the resource - * folder and scales it to a given size.
+ * Loads a {@code .png} image from the sub-folder {@code /icons/} of the + * resource folder and scales it to the given size.
* The suffix {@code .png} is automatically appended. * * @param name the image name without the .png suffix * @param size the size of the image to scale to * @return the loaded image * @since Envoy Client v0.1-beta - * @apiNote let's take a sample image {@code abc.png} in the folder - * {@code /icons/} and load it in size 16. - *
+ * @apiNote let's load a sample image {@code /icons/abc.png} in size 16.
* To do that, we only have to call * {@code IconUtil.loadIcon("abc", 16)} */ public static Image loadIcon(String name, int size) { return load("/icons/" + name + ".png", size); } /** - * Loads a {@code .png} icon whose design depends on the currently active theme - * from the sub-folder {@code /icons/} of the resource folder. - *

- * In case of the dark theme, the suffix {@code "white"} will be appended, else - * the suffix {@code "black"} will be appended. + * Loads a {@code .png} image whose design depends on the currently active theme + * from the sub-folder {@code /icons/dark/} or {@code /icons/light/} of the + * resource folder. *

* The suffix {@code .png} is automatically appended. * @@ -107,21 +98,17 @@ public class IconUtil { * the .png suffix * @return the loaded image * @since Envoy Client v0.1-beta - * @apiNote let's take two sample images {@code abc_black.png} and - * {@code abc_white.png} in the folder {@code /icons/} and load them. - *
- * To do that theme sensitve, we only have to call - * {@code IconUtil.loadIconThemeSensitive("abc_")} + * @apiNote let's take two sample images {@code /icons/dark/abc.png} and + * {@code /icons/light/abc.png}, and load one of them.
+ * To do that theme sensitive, we only have to call + * {@code IconUtil.loadIconThemeSensitive("abc")} */ public static Image loadIconThemeSensitive(String name) { return loadIcon(themeSpecificSubFolder() + name); } /** - * Loads a {@code .png} icon whose design depends on the currently active theme - * from the sub-folder {@code /icons/} of the resource - * folder and scales it to the given size. - *

- * In case of the dark theme, the suffix {@code "white"} will be appended, else - * the suffix {@code "black"} will be appended. + * Loads a {@code .png} image whose design depends on the currently active theme + * from the sub-folder {@code /icons/dark/} or {@code /icons/light/} of the + * resource folder and scales it to the given size. *

* The suffix {@code .png} is automatically appended. * @@ -129,26 +116,24 @@ public class IconUtil { * @param size the size of the image to scale to * @return the loaded image * @since Envoy Client v0.1-beta - * @apiNote let's take two sample images {@code abc_black.png} and - * {@code abc_white.png} in the folder {@code /icons/} and load it in - * size 16. - *
- * To do that theme sensitve, we only have to call - * {@code IconUtil.loadIconThemeSensitive("abc_", 16)} + * @apiNote let's take two sample images {@code /icons/dark/abc.png} and + * {@code /icons/light/abc.png}, and load one of them in size 16.
+ * To do that theme sensitive, we only have to call + * {@code IconUtil.loadIconThemeSensitive("abc", 16)} */ public static Image loadIconThemeSensitive(String name, int size) { return loadIcon(themeSpecificSubFolder() + name, size); } /** * - * Loads icons specified by an enum. The images have to be named like the + * Loads images specified by an enum. The images have to be named like the * lowercase enum constants with {@code .png} extension and be located inside a * folder with the lowercase name of the enum, which must be contained inside - * the {@code /icons} folder. + * the {@code /icons/} folder. * - * @param the enum that specifies the icons to load + * @param the enum that specifies the images to load * @param enumClass the class of the enum - * @param size the size to scale the icons to - * @return a map containing the loaded icons with the corresponding enum + * @param size the size to scale the images to + * @return a map containing the loaded images with the corresponding enum * constants as keys * @since Envoy Client v0.1-beta */ @@ -161,10 +146,10 @@ public class IconUtil { } /** - * This method should be called if the display of an icon depends upon the + * This method should be called if the display of an image depends upon the * currently active theme.
* In case of a default theme, the string returned will be - * returned ({@code dark/} or {@code light/}), else it will be empty. + * ({@code dark/} or {@code light/}), otherwise it will be empty. * * @return the theme specific folder * @since Envoy Client v0.1-beta