Load JavaFX Images in IconUtil, display Envoy logo
This commit is contained in:
		@@ -1,12 +1,10 @@
 | 
			
		||||
package envoy.client.ui;
 | 
			
		||||
 | 
			
		||||
import java.awt.Image;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.EnumMap;
 | 
			
		||||
import java.util.EnumSet;
 | 
			
		||||
 | 
			
		||||
import javax.imageio.ImageIO;
 | 
			
		||||
import javax.swing.ImageIcon;
 | 
			
		||||
import javafx.scene.image.Image;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Provides static utility methods for loading icons from the resource
 | 
			
		||||
@@ -24,7 +22,17 @@ public class IconUtil {
 | 
			
		||||
	private IconUtil() {}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Loads an icon from resource folder and scales it to a given size.
 | 
			
		||||
	 * Loads an icon from the resource folder.
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param path the path to the icon inside the resource folder
 | 
			
		||||
	 * @return the icon
 | 
			
		||||
	 * @throws IOException if the loading process failed
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public static Image load(String path) throws IOException { return new Image(IconUtil.class.getResource(path).toExternalForm()); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Loads an icon from the resource folder and scales it to a given size.
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param path the path to the icon inside the resource folder
 | 
			
		||||
	 * @param size the size to scale the icon to
 | 
			
		||||
@@ -32,8 +40,8 @@ public class IconUtil {
 | 
			
		||||
	 * @throws IOException if the loading process failed
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public static ImageIcon load(String path, int size) throws IOException {
 | 
			
		||||
		return new ImageIcon(ImageIO.read(IconUtil.class.getResourceAsStream(path)).getScaledInstance(size, size, Image.SCALE_SMOOTH));
 | 
			
		||||
	public static Image load(String path, int size) throws IOException {
 | 
			
		||||
		return new Image(IconUtil.class.getResource(path).toExternalForm(), size, size, true, true);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
@@ -51,8 +59,8 @@ public class IconUtil {
 | 
			
		||||
	 * @throws IOException if the loading process failed
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public static <T extends Enum<T>> EnumMap<T, ImageIcon> loadByEnum(Class<T> enumClass, int size) throws IOException {
 | 
			
		||||
		var	icons	= new EnumMap<T, ImageIcon>(enumClass);
 | 
			
		||||
	public static <T extends Enum<T>> EnumMap<T, Image> loadByEnum(Class<T> enumClass, int size) throws IOException {
 | 
			
		||||
		var	icons	= new EnumMap<T, Image>(enumClass);
 | 
			
		||||
		var	path	= "/icons/" + enumClass.getSimpleName().toLowerCase() + "/";
 | 
			
		||||
		for (var e : EnumSet.allOf(enumClass))
 | 
			
		||||
			icons.put(e, load(path + e.toString().toLowerCase() + ".png", size));
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,7 @@ import javafx.fxml.FXML;
 | 
			
		||||
import javafx.fxml.FXMLLoader;
 | 
			
		||||
import javafx.scene.control.*;
 | 
			
		||||
import javafx.scene.control.Alert.AlertType;
 | 
			
		||||
import javafx.stage.Stage;
 | 
			
		||||
 | 
			
		||||
import envoy.client.data.Cache;
 | 
			
		||||
import envoy.client.data.ClientConfig;
 | 
			
		||||
@@ -75,6 +76,8 @@ public final class LoginDialog extends Dialog<Void> {
 | 
			
		||||
		loader.setController(this);
 | 
			
		||||
		final var dialogPane = loader.<DialogPane>load();
 | 
			
		||||
 | 
			
		||||
		((Stage) getDialogPane().getScene().getWindow()).getIcons().add(IconUtil.load("/icons/envoy_logo.png"));
 | 
			
		||||
		
 | 
			
		||||
		// Configure dialog buttons
 | 
			
		||||
		dialogPane.getButtonTypes().addAll(ButtonType.CLOSE, ButtonType.OK);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,6 @@ import javafx.fxml.FXMLLoader;
 | 
			
		||||
import javafx.scene.Scene;
 | 
			
		||||
import javafx.scene.control.Alert;
 | 
			
		||||
import javafx.scene.control.Alert.AlertType;
 | 
			
		||||
import javafx.scene.image.Image;
 | 
			
		||||
import javafx.scene.layout.GridPane;
 | 
			
		||||
import javafx.scene.layout.Pane;
 | 
			
		||||
import javafx.stage.Stage;
 | 
			
		||||
@@ -137,7 +136,7 @@ public final class Startup extends Application {
 | 
			
		||||
		changeScene("/fxml/ChatScene.fxml", new GridPane(), false);
 | 
			
		||||
		Platform.runLater(() -> { ((ChatSceneController) loader.getController()).initializeData(this, localDB, client, writeProxy); });
 | 
			
		||||
		stage.setTitle("Envoy");
 | 
			
		||||
		stage.getIcons().add(new Image(getClass().getResourceAsStream("/icons/envoy_logo.png")));
 | 
			
		||||
		stage.getIcons().add(IconUtil.load("/icons/envoy_logo.png"));
 | 
			
		||||
		stage.show();
 | 
			
		||||
		// TODO: Add capability to change custom CSS. In case of switching to a default
 | 
			
		||||
		// theme, no further action is required
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user