diff --git a/src/main/java/NTNU/IDATT1002/controllers/Map.java b/src/main/java/NTNU/IDATT1002/controllers/Map.java index 2eb43959530795f61e724e713375e96db1554778..65274811f52926cf5068dce502fc0195d7bd5184 100644 --- a/src/main/java/NTNU/IDATT1002/controllers/Map.java +++ b/src/main/java/NTNU/IDATT1002/controllers/Map.java @@ -1,11 +1,14 @@ package NTNU.IDATT1002.controllers; import NTNU.IDATT1002.App; +import NTNU.IDATT1002.models.Album; import NTNU.IDATT1002.models.Image; +import NTNU.IDATT1002.service.AlbumService; import NTNU.IDATT1002.service.ImageService; import com.lynden.gmapsfx.GoogleMapView; import com.lynden.gmapsfx.MapComponentInitializedListener; import com.lynden.gmapsfx.javascript.object.GoogleMap; +import java.util.Optional; import javafx.concurrent.Task; import javafx.event.ActionEvent; import javafx.fxml.FXML; @@ -48,6 +51,7 @@ public class Map implements Initializable, MapComponentInitializedListener { private GoogleMap map; private ImageService imageService; + private AlbumService albumService; private ExecutorService executorService = Executors.newCachedThreadPool(); private static Logger logger = LoggerFactory.getLogger(Map.class); @@ -55,6 +59,7 @@ public class Map implements Initializable, MapComponentInitializedListener { public Map() { EntityManager entityManager = App.ex.getEntityManager(); imageService = new ImageService(entityManager); + albumService = new AlbumService(entityManager); } /** @@ -72,16 +77,31 @@ public class Map implements Initializable, MapComponentInitializedListener { /** - * Fetch all images in a background task and create and display the map on success. + * Check is there is a current album in dataexchange first and uses images from album to display on map. + * If none is found it proceeds to get all images available and display on map */ @Override public void mapInitialized() { - executorService.submit(fetchImages); + List<Image> albumImages = new ArrayList<>(); + Long currentAlbumId; - fetchImages.setOnSucceeded(workerStateEvent -> { - List<Image> images = fetchImages.getValue(); - ImageMapFactory.createMap(mapView, images); - }); + if(App.ex.getChosenAlbumId() == null) { + executorService.submit(fetchImages); + + fetchImages.setOnSucceeded(workerStateEvent -> { + List<Image> allImages = fetchImages.getValue(); + ImageMapFactory.createMap(mapView, allImages); + }); + } + else { + currentAlbumId = App.ex.getChosenAlbumId(); + Optional<Album> optionalAlbum = albumService.getAlbumById(currentAlbumId); + if (optionalAlbum.isPresent()) { + Album album = optionalAlbum.get(); + albumImages = album.getImages(); + } + ImageMapFactory.createMap(mapView, albumImages); + } } /** @@ -105,6 +125,7 @@ public class Map implements Initializable, MapComponentInitializedListener { * @throws IOException */ public void switchToMain(MouseEvent mouseEvent) throws IOException { + App.ex.setChosenAlbumId(null); App.setRoot("main"); } @@ -118,6 +139,7 @@ public class Map implements Initializable, MapComponentInitializedListener { if (!tbar_search.getText().isEmpty()){ App.ex.setSearchField(tbar_search.getText()); } + App.ex.setChosenAlbumId(null); App.setRoot("search"); } @@ -127,6 +149,7 @@ public class Map implements Initializable, MapComponentInitializedListener { * @throws IOException */ public void switchToExplore(ActionEvent actionEvent) throws IOException { + App.ex.setChosenAlbumId(null); App.setRoot("explore"); } @@ -136,6 +159,7 @@ public class Map implements Initializable, MapComponentInitializedListener { * @throws IOException */ public void switchToAlbums(ActionEvent actionEvent) throws IOException { + App.ex.setChosenAlbumId(null); App.setRoot("explore_albums"); } @@ -146,6 +170,7 @@ public class Map implements Initializable, MapComponentInitializedListener { * @throws IOException */ public void switchToMap(ActionEvent actionEvent) throws IOException { + App.ex.setChosenAlbumId(null); App.setRoot("map"); } @@ -156,6 +181,7 @@ public class Map implements Initializable, MapComponentInitializedListener { * @throws IOException this page does not exist */ public void switchToUpload(ActionEvent actionEvent) throws IOException { + App.ex.setChosenAlbumId(null); App.setRoot("upload"); } diff --git a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java index 65513152d5e6187e1dfdfe4890d5300d00b85034..7d855c768b0331cde298abc66fd0e18e04466d54 100644 --- a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java +++ b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java @@ -5,6 +5,7 @@ import NTNU.IDATT1002.models.Album; import NTNU.IDATT1002.models.Tag; import NTNU.IDATT1002.service.AlbumDocument; import NTNU.IDATT1002.service.AlbumService; +import NTNU.IDATT1002.service.TagService; import NTNU.IDATT1002.utils.ImageUtil; import java.io.File; import java.io.IOException; @@ -63,6 +64,7 @@ public class ViewAlbum implements Initializable { @FXML public VBox albumTextContainer; public HBox albumImages; + public Button viewOnMapBtn; private AlbumService albumService; private Album currentAlbum; @@ -87,8 +89,8 @@ public class ViewAlbum implements Initializable { NTNU.IDATT1002.models.Image titleImage = album.getImages().get(0); Image image = ImageUtil.convertToFXImage(titleImage); mainPicture.setImage(image); - pictureTitleField.setText("LEGG TIL BILDETITTEL HER"); - pictureTagsField.setText("#LEGG #TIL #TAGS #HER"); + pictureTitleField.setText(album.getTitle()); + pictureTagsField.setText(TagService.getTagsAsString(album.getTags())); insertAlbumTextToContainer(album); for (NTNU.IDATT1002.models.Image i: album.getImages()) { ImageView iV = new ImageView(); @@ -226,6 +228,7 @@ public class ViewAlbum implements Initializable { * @throws IOException */ public void switchToMain(MouseEvent mouseEvent) throws IOException { + App.ex.setChosenAlbumId(null); App.setRoot("main"); } @@ -239,6 +242,7 @@ public class ViewAlbum implements Initializable { if (!tbar_search.getText().isEmpty()){ App.ex.setSearchField(tbar_search.getText()); } + App.ex.setChosenAlbumId(null); App.setRoot("search"); } @@ -248,6 +252,7 @@ public class ViewAlbum implements Initializable { * @throws IOException */ public void switchToExplore(ActionEvent actionEvent) throws IOException { + App.ex.setChosenAlbumId(null); App.setRoot("explore"); } @@ -257,6 +262,7 @@ public class ViewAlbum implements Initializable { * @throws IOException */ public void switchToAlbums(ActionEvent actionEvent) throws IOException { + App.ex.setChosenAlbumId(null); App.setRoot("explore_albums"); } @@ -266,6 +272,7 @@ public class ViewAlbum implements Initializable { * @throws IOException */ public void switchToMap(ActionEvent actionEvent) throws IOException { + App.ex.setChosenAlbumId(null); App.setRoot("map"); } @@ -275,6 +282,7 @@ public class ViewAlbum implements Initializable { * @throws IOException this page does not exist */ public void switchToUpload(ActionEvent actionEvent) throws IOException { + App.ex.setChosenAlbumId(null); App.setRoot("upload"); } @@ -346,4 +354,8 @@ public class ViewAlbum implements Initializable { HostServices hostServices = App.ex.getHostServices(); hostServices.showDocument(file.getAbsolutePath()); } + + public void viewOnMap(ActionEvent actionEvent) throws IOException { + App.setRoot("map"); + } } diff --git a/src/main/resources/NTNU/IDATT1002/view_album.fxml b/src/main/resources/NTNU/IDATT1002/view_album.fxml index 962d4a82858f32fe5b9faff51c413ee05e758c4d..2d190f4633bdadbfb46bc2351b43973ab5b775c6 100644 --- a/src/main/resources/NTNU/IDATT1002/view_album.fxml +++ b/src/main/resources/NTNU/IDATT1002/view_album.fxml @@ -100,11 +100,20 @@ </font> </Text> <Pane fx:id="metadataPane" prefHeight="304.0" prefWidth="700.0" style="-fx-background-color: #ffffff;" /> - <Button fx:id="createAlbumPdf" mnemonicParsing="false" onAction="#createPdf" text="CREATE ALBUM PDF"> - <font> - <Font size="18.0" /> - </font> - </Button> + <HBox prefHeight="39.0" prefWidth="700.0" spacing="20.0"> + <children> + <Button fx:id="createAlbumPdf" mnemonicParsing="false" onAction="#createPdf" text="CREATE ALBUM PDF"> + <font> + <Font size="18.0" /> + </font> + </Button> + <Button fx:id="viewOnMapBtn" mnemonicParsing="false" onAction="#viewOnMap" text="VIEW ON MAP"> + <font> + <Font size="18.0" /> + </font> + </Button> + </children> + </HBox> </children> </VBox> </children>