Skip to content
Snippets Groups Projects
Commit 995f0d89 authored by Simon Jensen's avatar Simon Jensen
Browse files

Merge branch 'new_explore' into 'dev'

New explore

See merge request !115
parents c476ef18 3f8b43d3
No related branches found
No related tags found
2 merge requests!165Weekly merge to Master,!115New explore
Pipeline #80060 passed
......@@ -19,7 +19,7 @@ public class DataExchange {
private String searchField;
private List<File> uploadedFiles;
private Long chosenAlbumId;
private String chosenImg;
private Long chosenImg;
public DataExchange(){
searchField = "";
......@@ -45,7 +45,7 @@ public class DataExchange {
return chosenAlbumId;
}
public String getChosenImg() {
public Long getChosenImg() {
return chosenImg;
}
......@@ -69,7 +69,7 @@ public class DataExchange {
this.chosenAlbumId = chosenAlbumId;
}
public void setChosenImg(String chosenImg) {
public void setChosenImg(Long chosenImg) {
this.chosenImg = chosenImg;
}
......
package NTNU.IDATT1002.controllers;
import NTNU.IDATT1002.App;
import NTNU.IDATT1002.models.Tag;
import NTNU.IDATT1002.service.ImageService;
import NTNU.IDATT1002.service.TagService;
import NTNU.IDATT1002.utils.ImageUtil;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.Initializable;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextField;
......@@ -21,6 +26,7 @@ import java.net.URL;
import java.util.Arrays;
import java.util.List;
import java.util.ResourceBundle;
import java.util.stream.Collectors;
/**
* Controls the buttons and changeable elements on explore.fxml,
......@@ -50,30 +56,31 @@ public class Explore implements Initializable {
*/
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
List<String> urls = Arrays.asList("@../../Images/placeholder-1920x1080.png", "@../../Images/party.jpg", "@../../Images/placeholderLogo.png", "@../../Images/party.jpg","@../../Images/placeholder-1920x1080.png", "@../../Images/placeholderLogo.png", "@../../Images/placeholder-1920x1080.png", "@../../Images/placeholderLogo.png", "@../../Images/party.jpg", "@../../Images/placeholderLogo.png", "@../../Images/party.jpg","@../../Images/placeholder-1920x1080.png", "@../../Images/placeholderLogo.png", "@../../Images/placeholder-1920x1080.png", "@../../Images/party.jpg");
List<NTNU.IDATT1002.models.Image> images = new ImageService(App.ex.getEntityManager()).getAllImages();
//Limited elements to 15 since grid pane since is 3x15
//Can implement automatic row adding when this limit exceeded later
for(int i = 0; i < urls.size() && i < 15; i++) {
for(int i = 0; i < images.size() && i < 15; i++) {
//Row and column in gripdane
int column = i%3;
int row = (i-column)/3;
//Make vbox container for content
VBox v = new VBox();
v.setPrefHeight(400);
v.setPrefWidth(400);
v.setAlignment(Pos.TOP_LEFT);
//v.setStyle("-fx-background-color: #999999;");
VBox vBox = new VBox();
vBox.setPrefHeight(400);
vBox.setPrefWidth(400);
vBox.setAlignment(Pos.CENTER);
//vBox.setStyle("-fx-background-color: #999999;");
//Image container
ImageView iV = new ImageView();
iV.setImage(new Image(urls.get(i)));
iV.setFitHeight(250);
iV.setFitWidth(400);
iV.pickOnBoundsProperty().setValue(true);
iV.setPreserveRatio(true);
ImageView imageView = new ImageView();
imageView.setId(String.valueOf(images.get(i).getId()));
imageView.setImage(ImageUtil.convertToFXImage(images.get(i)));
imageView.setFitHeight(250);
imageView.setFitWidth(400);
imageView.pickOnBoundsProperty().setValue(true);
imageView.setPreserveRatio(true);
//Link to view image page
iV.setOnMouseClicked(new EventHandler<MouseEvent>() {
imageView.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent e) {
try{
switchToPicture(e);
......@@ -86,14 +93,15 @@ public class Explore implements Initializable {
//Text describing the picture's title and tag
Text title = new Text("TITLE:");
title.setFont(Font.font("System Bold", 24));
Text tag = new Text("#TAGS");
String tagsAsString = TagService.getTagsAsString(images.get(i).getTags());
Text tag = new Text("TAGS:\n " + tagsAsString);
tag.setFont(Font.font("System Bold", 18));
//Add elements to vbox
v.getChildren().addAll(iV, title, tag);
vBox.getChildren().addAll(imageView, title, tag);
//Add vbox to gridpane
gridPane.add(v, column, row);
gridPane.add(vBox, column, row);
}
}
......@@ -161,8 +169,14 @@ public class Explore implements Initializable {
* @throws IOException
*/
public void switchToPicture(MouseEvent mouseEvent) throws IOException {
if(mouseEvent.getSource() instanceof ImageView){
App.ex.setChosenImg(((ImageView) mouseEvent.getSource()).getImage().getUrl());
long imageId = 0;
Node node = (Node) mouseEvent.getSource();
if (node.getId() != null){
imageId = Long.parseLong(node.getId());
}
if (imageId != 0) {
App.ex.setChosenImg(imageId);
App.setRoot("view_picture");
}
}
......
......@@ -85,6 +85,7 @@ public class Search implements Initializable {
pane.setPrefHeight(300);
ImageView imageView = new ImageView();
imageView.setId(String.valueOf(images.get(i).getId()));
imageView.setImage(ImageUtil.convertToFXImage(images.get(i)));
imageView.setFitHeight(300);
imageView.setFitWidth(500);
......@@ -234,9 +235,15 @@ public class Search implements Initializable {
* @throws IOException
*/
public void switchToPicture(MouseEvent mouseEvent) throws IOException {
if(mouseEvent.getSource() instanceof ImageView){
App.ex.setChosenImg(((ImageView) mouseEvent.getSource()).getImage().getUrl());
App.setRoot("view_picture");
long imageId = 0;
Node node = (Node) mouseEvent.getSource();
if (node.getId() != null){
imageId = Long.parseLong(node.getId());
}
if (imageId != 0) {
App.ex.setChosenImg(imageId);
App.setRoot("view_image");
}
}
}
package NTNU.IDATT1002.controllers;
import NTNU.IDATT1002.App;
import NTNU.IDATT1002.service.ImageService;
import NTNU.IDATT1002.utils.ImageUtil;
import javafx.event.ActionEvent;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
......@@ -11,8 +13,10 @@ import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
import javax.persistence.EntityManager;
import java.io.IOException;
import java.net.URL;
import java.util.Optional;
import java.util.ResourceBundle;
......@@ -34,10 +38,18 @@ public class ViewPicture implements Initializable{
public Pane metadata_pane;
public Button tbar_searchBtn;
public Button tbar_albums;
private ImageService imageService;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
picture.setImage(new Image(App.ex.getChosenImg()));
EntityManager entityManager = App.ex.getEntityManager();
imageService = new ImageService(entityManager);
Long currentImageId = App.ex.getChosenImg();
NTNU.IDATT1002.models.Image foundImage = imageService.findById(currentImageId).get();
Image image = ImageUtil.convertToFXImage(foundImage);
picture.setImage(image);
}
/**
......
......@@ -37,6 +37,7 @@ public class ImageRepository extends AbstractRepository<Image, Long> {
setEntityClass(Image.class);
}
/**
* Retrieves all albums of the user with the given username.
*
......
......@@ -101,6 +101,10 @@ public class ImageService {
.collect(Collectors.toList());
}
public Optional<Image> findById(Long id){
return imageRepository.findById(id);
}
/**
* Searches images by tags and username, and merges the two list into one with all images
* uses removeDuplicates list to return a list with no duplicate images
......@@ -116,7 +120,7 @@ public class ImageService {
allFound.addAll(byUsername);
return removeDuplicates(allFound);
}
/**
* takes a list and removes all duplicate elements
......@@ -127,4 +131,7 @@ public class ImageService {
public List<Image> removeDuplicates(List<Image> images){
return images.stream().distinct().collect(Collectors.toList());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment