From dcf48f656bc1453b1fc7395fab95347c89124a5a Mon Sep 17 00:00:00 2001 From: Eirik Steira <eirsteir@stud.ntnu.no> Date: Thu, 26 Mar 2020 10:06:42 +0100 Subject: [PATCH] Add title images and tags to individual albums in explore albums Remove comma from list of tags Add javadoc to ImageUtil --- .../IDATT1002/controllers/ExploreAlbums.java | 19 ++++-------- .../filters/ImageAlbumFilter.java | 2 +- .../{service => }/filters/ImageFilter.java | 2 +- .../IDATT1002/service/ImageAlbumService.java | 2 +- .../NTNU/IDATT1002/service/ImageService.java | 2 +- .../java/NTNU/IDATT1002/utils/ImageUtil.java | 30 +++++++++++++++++++ 6 files changed, 40 insertions(+), 17 deletions(-) rename src/main/java/NTNU/IDATT1002/{service => }/filters/ImageAlbumFilter.java (97%) rename src/main/java/NTNU/IDATT1002/{service => }/filters/ImageFilter.java (95%) diff --git a/src/main/java/NTNU/IDATT1002/controllers/ExploreAlbums.java b/src/main/java/NTNU/IDATT1002/controllers/ExploreAlbums.java index 6c1c1742..794925c1 100644 --- a/src/main/java/NTNU/IDATT1002/controllers/ExploreAlbums.java +++ b/src/main/java/NTNU/IDATT1002/controllers/ExploreAlbums.java @@ -4,6 +4,7 @@ import NTNU.IDATT1002.App; import NTNU.IDATT1002.models.ImageAlbum; import NTNU.IDATT1002.models.Tag; import NTNU.IDATT1002.service.ImageAlbumService; +import NTNU.IDATT1002.utils.ImageUtil; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; @@ -116,7 +117,6 @@ public class ExploreAlbums implements Initializable { * @param pane the pane to add the image to */ private void insertImageViewToPane(ImageAlbum album, Pane pane) { - // Set and format image album_image = new ImageView(); album_image.setFitHeight(307.0); album_image.setFitWidth(516.0); @@ -126,9 +126,7 @@ public class ExploreAlbums implements Initializable { album_image.setPreserveRatio(true); NTNU.IDATT1002.models.Image titleImage = album.getImages().get(0); - album_image.setId(titleImage.getId().toString()); - - Image image = new Image("@../../Images/placeholder-1920x1080.png"); // TODO: display image here + Image image = ImageUtil.convertToFXImage(titleImage); album_image.setImage(image); pane.getChildren().add(album_image); @@ -140,7 +138,6 @@ public class ExploreAlbums implements Initializable { * @param pane the pane to add the title to */ private void insertAlbumTitleLabelToPane(Pane pane) { - // set and format title label Text text = new Text(); text.setText("ALBUM: "); text.setFont(Font.font(48.0)); @@ -159,7 +156,6 @@ public class ExploreAlbums implements Initializable { * @param pane the pane to add the author label to */ private void insertAlbumAuthorLabelToPane(Pane pane) { - // set and format author label Text authorLabel = new Text(); authorLabel.setText("AUTHOR: "); authorLabel.setFont(Font.font(24)); @@ -178,7 +174,6 @@ public class ExploreAlbums implements Initializable { * @param pane the pane to add the description label to */ private void insertAlbumDescriptionLabelToPane(Pane pane) { - // set and format description label Text descriptionLabel = new Text(); descriptionLabel.setText("DESCRIPTION: "); descriptionLabel.setFont(Font.font(18.0)); @@ -198,7 +193,6 @@ public class ExploreAlbums implements Initializable { * @param pane the pane to add the author to */ private void insertAlbumAuthorToPane(ImageAlbum album, Pane pane) { - // set and format author album_author = new Text(); album_author.setId("album_author"); album_author.setText(album.getUser().getUsername()); @@ -279,18 +273,16 @@ public class ExploreAlbums implements Initializable { private void insertAlbumTagsToPane(ImageAlbum album, Pane pane) { String tagsAsString = album.getTags().stream() .map(Tag::getName) - .collect(Collectors.joining(", ")); - - System.out.println(tagsAsString); + .collect(Collectors.joining(" ")); album_tags = new Text(); - album_tags.setText("tag1, tag2"); + album_tags.setText(tagsAsString); album_tags.setFont(Font.font(24.0)); album_tags.setLayoutX(707.0); album_tags.setLayoutY(129.0); album_tags.setStrokeType(StrokeType.OUTSIDE); album_tags.setStrokeWidth(0.0); - album_tags.setWrappingWidth(270.0); + album_tags.setWrappingWidth(570.0); pane.getChildren().add(album_tags); } @@ -310,6 +302,7 @@ public class ExploreAlbums implements Initializable { open_album.setFont(Font.font(18.0)); open_album.setLayoutX(551.0); open_album.setLayoutY(250.0); + open_album.setOnAction(event -> { try { switchToViewAlbum(event); diff --git a/src/main/java/NTNU/IDATT1002/service/filters/ImageAlbumFilter.java b/src/main/java/NTNU/IDATT1002/filters/ImageAlbumFilter.java similarity index 97% rename from src/main/java/NTNU/IDATT1002/service/filters/ImageAlbumFilter.java rename to src/main/java/NTNU/IDATT1002/filters/ImageAlbumFilter.java index 3f9dc6fb..f8d998e4 100644 --- a/src/main/java/NTNU/IDATT1002/service/filters/ImageAlbumFilter.java +++ b/src/main/java/NTNU/IDATT1002/filters/ImageAlbumFilter.java @@ -1,4 +1,4 @@ -package NTNU.IDATT1002.service.filters; +package NTNU.IDATT1002.filters; import NTNU.IDATT1002.models.ImageAlbum; diff --git a/src/main/java/NTNU/IDATT1002/service/filters/ImageFilter.java b/src/main/java/NTNU/IDATT1002/filters/ImageFilter.java similarity index 95% rename from src/main/java/NTNU/IDATT1002/service/filters/ImageFilter.java rename to src/main/java/NTNU/IDATT1002/filters/ImageFilter.java index 0f5d391d..f7ab81c8 100644 --- a/src/main/java/NTNU/IDATT1002/service/filters/ImageFilter.java +++ b/src/main/java/NTNU/IDATT1002/filters/ImageFilter.java @@ -1,4 +1,4 @@ -package NTNU.IDATT1002.service.filters; +package NTNU.IDATT1002.filters; import NTNU.IDATT1002.models.Image; diff --git a/src/main/java/NTNU/IDATT1002/service/ImageAlbumService.java b/src/main/java/NTNU/IDATT1002/service/ImageAlbumService.java index cdcf9c2d..c9db47d8 100644 --- a/src/main/java/NTNU/IDATT1002/service/ImageAlbumService.java +++ b/src/main/java/NTNU/IDATT1002/service/ImageAlbumService.java @@ -6,7 +6,7 @@ import NTNU.IDATT1002.models.Tag; import NTNU.IDATT1002.models.User; import NTNU.IDATT1002.repository.ImageAlbumRepository; import NTNU.IDATT1002.repository.TagRepository; -import NTNU.IDATT1002.service.filters.ImageAlbumFilter; +import NTNU.IDATT1002.filters.ImageAlbumFilter; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; diff --git a/src/main/java/NTNU/IDATT1002/service/ImageService.java b/src/main/java/NTNU/IDATT1002/service/ImageService.java index d5e40593..1bd1dd7e 100644 --- a/src/main/java/NTNU/IDATT1002/service/ImageService.java +++ b/src/main/java/NTNU/IDATT1002/service/ImageService.java @@ -1,7 +1,7 @@ package NTNU.IDATT1002.service; import NTNU.IDATT1002.models.*; import NTNU.IDATT1002.repository.*; -import NTNU.IDATT1002.service.filters.ImageFilter; +import NTNU.IDATT1002.filters.ImageFilter; import NTNU.IDATT1002.utils.ImageUtil; import NTNU.IDATT1002.utils.MetaDataExtractor; diff --git a/src/main/java/NTNU/IDATT1002/utils/ImageUtil.java b/src/main/java/NTNU/IDATT1002/utils/ImageUtil.java index 96d8dacf..72fc10ba 100644 --- a/src/main/java/NTNU/IDATT1002/utils/ImageUtil.java +++ b/src/main/java/NTNU/IDATT1002/utils/ImageUtil.java @@ -1,10 +1,25 @@ package NTNU.IDATT1002.utils; + +import NTNU.IDATT1002.models.Image; + +import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; + +/** + * Image Util class for performing {@link Image} related utility operations, + * such as converting a file to a byte array and {@link Image} to {@link javafx.scene.image.Image}. + */ public class ImageUtil { + /** + * Convert the file on the given path to a byte array. + * + * @param path the path to the file to be converted + * @return the file, represented as a byte array + */ public static byte[] convertToBytes(String path) { File file = new File(path); byte[] byteFile = new byte[(int) file.length()]; @@ -19,4 +34,19 @@ public class ImageUtil { return byteFile; } + + /** + * Convert the given domain image to a javafx image which can be displayed by a controller. + * + * @param image the image to convert + * @return the converted image. + */ + public static javafx.scene.image.Image convertToFXImage(Image image) { + ByteArrayInputStream inputStream = ImageUtil.getInputStream(image); + return new javafx.scene.image.Image(inputStream); + } + + private static ByteArrayInputStream getInputStream(Image image) { + return new ByteArrayInputStream(image.getRawImage()); + } } -- GitLab